Steil Rafael - iOS: Programe para iPhone e iPad стр 14.

Шрифт
Фон

-(id) initWithNome:(NSString *) nome eQuantidadeFuncionarios:(int)

quantidade {

if ((self = [super init])) {

self.nome = nome;

self.quantidadeFuncionarios = quantidade;

}

return self;

}

Para criar uma nova instância:

Empresa *ep = [[Empresa alloc] initWithNome:@"Jujubas LTDA"

eQuantidadeFuncionarios:17];

47

3.17. Melhoria: esconder o teclado automaticamente

Casa do Código

3.17

Melhoria:

esconder o teclado automatica-

mente

Um problema com o nosso aplicativo é que, uma vez que o teclado aparece, ele nunca

mais some, nem mesmo após salvarmos a empresa. Além disso, a imagem de su-

cesso fica escondida. Isso ocorre porque em iOS não existe exatamente o conceito de

foco nos componentes como temos em aplicações tradicionais ou mesmo na Web,

mas sim algo chamado de responder, que são objetos que podem lidar com diversos

tipos de eventos. No caso de componentes como o UITextField que utilizamos

no aplicativo deste capítulo, eles aceitam as mensagens de entrada de texto (que dis-

param o teclado), porém outros componentes como botões (o UIButton no nosso

caso) ignoram tais eventos. Então, o componente que inicialmente pegou o teclado

fica com ele até que outro componente o peça ou, então, que explicitamente recebam

uma mensagem para liberá-lo. E é isso o que faremos.

A cadeia de eventos

Tecnicamente os motivos são um pouco mais densos, e na explicação

desta seção optamos por apresentar de uma forma mais curta e simples

para não sair do foco do capítulo. Para saber mais a respeito, procure por

UIResponder Chain na Internet.

No

método

salvar:

adicione

uma

chamada

ao

método

resignFirstResponder do componente de nome da empresa, conforme o

código abaixo:

1 - (IBAction)salvar:(id)sender {

2

// Libera o teclado

3

[self.nomeField resignFirstResponder];

4

5

// Restante do método

6 }

O código da linha três diz algo como eu me abstenho de responder pelos eventos

por enquanto, fazendo com que o teclado desapareça. Se quiser forçar o teclado a

aparecer, basta usar o método becomeFirstResponder.

48

Casa do Código

Capítulo 3. Mais Objective-C e Xcode

3.18

Melhoria: mostrando a mensagem de sucesso

somente ao salvar

Até o momento a mensagem

Dados salvos com sucesso aparece o tempo todo,

quando na prática deveria aparecer após adicionarmos uma nova empresa, e ainda

assim apenas por alguns momentos. Para solucionar isso primeiro precisamos

escondê-la ao iniciar o aplicativo, e mostrá-la na ação do botão Salvar.

Para a primeira primeira parte, atribua o valor YES à propriedade hidden da

variável avisoSucessoLabel, isso tudo no método viewDidLoad do arquivo

ViewController.m, conforme o código abaixo:

- (void)viewDidLoad {

[super viewDidLoad];

self.avisoSucessoLabel.hidden = YES;

}

Em tempo: todo componente tem a propriedade hidden. Para a segunda parte

mostrar a mensagem por alguns instantes vamos novamente modificar o mé-

todo salvar:. Adicione o código abaixo ao final do método:

1 - (IBAction)salvar:(id)sender {

2

// Código já existente omitido apenas no livro

3

4

self.avisoSucessoLabel.alpha = 0;

5

6

[UIView animateWithDuration:1 animations:^{

7

self.avisoSucessoLabel.hidden = NO;

8

self.avisoSucessoLabel.alpha = 1;

9

} completion:^(BOOL finalizado) {

10

[UIView animateWithDuration:1 delay:2 options:0 animations:^{

11

self.avisoSucessoLabel.alpha = 0;

12

} completion:^(BOOL finalizado) {

13

self.avisoSucessoLabel.hidden = YES;

14

}];

15

}];

16 }

Se você se assustou com este último pedaço de código, não se preocupe: você

não é o único. Objective-C pode ser um tanto amedrontador em certos momentos.

Além disso, o código ficou um pouco maior porque estamos fazendo duas anima-

ções: a primeira para mostrar o aviso, e a segunda para escondê-la novamente após

49

3.18. Melhoria: mostrando a mensagem de sucesso somente ao salvar

Casa do Código

um certo tempo. Mais adiante, no capítulo sobre UIViews mostraremos a fundo

o funcionamento dos blocos de animação, que são um recurso mais avançado da

linguagem.

Criação do bloco de animação

Repare que o bloco de animação criado na última listagem de código

utiliza o caracter circunflexo ( ^) para indicar o início de um pedaço de

código. Em alguns teclados é necessário apertar a tecla que contêm este

símbolo, seguido da barra de espaço.

Rode o aplicativo, insira uma empresa, e você verá a mensagem aparecendo de

maneira animada, e depois de 2 segundos tornando a desaparecer automaticamente.

Você está ficando bom nisso!

50

Capítulo 4

Coordenando o trabalho com

controladores

Diferentes plataformas contêm diferentes maneiras de resolver uma necessidade bas-

tante comum, que é a de gerenciar diversas telas e funcionalidades. Além disso, é

necessário que a navegação e transição entre elas sejam uma tarefa intuitiva para o

usuário e lógica para o desenvolvedor. Em aplicativos iOS isso é feito com o uso de

controladores (controllers), que são classes que como o próprio nome sugere

controlam (ou gerenciam) um conjunto de funcionalidades diretamente relaciona-

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке