2010-01-03 7 views
3

Est-il possible qu'un UIPickerView apparaisse à la place d'un clavier lorsqu'un UITextField est sélectionné? Chaque option dans Interface Builder est une sorte de clavier.UITextField et UIPickerView

Je suppose que je pourrais créer un UIPickerView par programmation et en créer un quand UITextField enregistre un événement touchUpInside, puis dire à UITextField de resignFirstResponder, mais cela semble un peu un hack.

Existe-t-il un moyen "officiel" ou plus "correct" de le faire?

Merci!

Répondre

6

Vous pouvez mettre en œuvre ce code et remplacer le comportement par défaut (qui est, montrant le clavier):

#pragma mark - 
#pragma mark UITextFieldDelegate methods 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil 
                message:@"Bouh!" 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
    return NO; 
} 

Au lieu de montrer un UIAlertView, vous pourriez aussi bien montrer votre propre UIPickerView et faire votre truc.

+0

@akosma idée fantastique! Je n'avais pas réalisé que cela remplacerait le clavier. Si vous deviez appeler [super textFieldShouldBeginEditing: textField] qui montrerait le clavier, n'est-ce pas? –

+0

Pas nécessairement; textFieldShouldBeginEditing: est une méthode déléguée et ne fait partie d'aucune hiérarchie. Vous devriez "retourner YES" afin d'afficher le clavier. Dans votre logique, alors, vous devez décider si oui ou non afficher le clavier (OUI ou NON revient le tour;) –

+0

Merci akosma, je l'ai trouvé purement par hasard en prenant une pause d'essayer douloureusement d'écrire un clavier de remplacement. Procrastination FTW! – willc2