sexta-feira, 15 de fevereiro de 2013

iOS: Dicas 2

Olá povo,

Esse post vai em homenagem a minha turma do Curso de iOS à distância que ministrei no CESAR.edu. Foram deles as dúvidas abaixo que resolvi compartilhar com vocês.

Dica 1 - Adicionando UITableView ao UIAlertView
Podemos adicionar qualquer UIView dentro de um UIAlertView. Basta usar o método addSubView e posicioná-la da maneira que deseja. O que achei "feio" aqui é que para determinar o tamanho do alert setamos o texto dele com "\n". Poderíamos utilizar o método initWithFrame, mas achei o código ainda mais complexo (embora mais preciso em termos de tamanho).

UITableView *table = 
  [[UITableView alloc] 
    initWithFrame:CGRectMake(10, 50, 265, 100)];    
table.dataSource = self;
table.delegate = self;
    
UIAlertView *alert = [[UIAlertView alloc] 
  initWithTitle:@"Escolha uma opção"
  message:@"\n\n\n\n\n" 
  delegate:self 
  cancelButtonTitle:@"OK" 
  otherButtonTitles:nil, nil];
    
[alert addSubview:table];
alert.autoresizesSubviews = YES;
[alert show];

Tem uma opção interessante aqui também.

Dica 2 - Desabilitando um segmento do UISegmentedControl
Essa foi simples de achar, mas na aula passou desapercebido.

[_meuSegmentedControl 
  setEnabled:NO forSegmentAtIndex:0];

Dica 3 - Definir o badge da aplicação
O badge nada mais é do que o número que aparece em cima do ícone da aplicação, por exemplo quanto temos chamadas não atendidas e/ou mensagens recebidas.

[[UIApplication sharedApplication] 
  setApplicationIconBadgeNumber:12];

Dica 4 - Adicionar View ao teclado
Ao invés de criar a view no código, você pode adicionar a mesma no XIB da tela e setar a propriedade inputAccessoryView. Para exemplificar, adicionei uma Toolbar ao XIB e crie um IBOutlet para ela.
@interface NGViewController : UIViewController
@property (weak, nonatomic) 
  IBOutlet UITextField *txtSobrenome;
@property (weak, nonatomic) 
  IBOutlet UIToolbar *minhaBarra;
@end
Depois é só colocar isso no viewDidLoad
[_txtSobrenome setInputAccessoryView:_minhaBarra];


Dica 5 - Ocultar teclado virtual
Sempre xingava o iOS por ter que ocultar o teclado via código. Mas achei a melhor maneira para ocultar o teclado. É só usar o método touchesBegan:withEvent da classe UIRespoder (super classe de UIView e UIViewController)  e chamar o método endEditing da UIView.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];
}
Independente da quantidade de UITextFields, o teclado vai sempre desaparecer.

Dicas 6 - Obtendo a orientação
Uma das melhores maneiras de obter a orientação do dispositivo é a abaixo:

// Verifica se é portrait ou portrait upsidedown
if (UIDeviceOrientationIsPortrait(
      [[UIApplication sharedApplication] 
        statusBarOrientation])){
}

Essa abordagem resolve alguns problemas que já tive. Por exemplo, quando o telefone está sobre a mesa, o método [[UIDevice currentDevice]orientation] retorna a orientação UIDeviceOrientationFaceUp (com o display para cima), enquanto que o método acima retorna a orientação da barra de status do aparelho e não do aparelho em si.

Qualquer dúvida (ou sugestão), deixem seus comentários,

4br4ç05
nglauber

Um comentário:

Ricardo Gilson disse...

Muito legal essas dicas Professor!