à mon avis J'ai plusieurs UITextFields et j'ai besoin de montrer parfois un keybord pour la saisie de texte et d'autres fois un UIDatePicker.Plusieurs UITextField, besoin de basculer entre le clavier et UIDatePicker
Je commande pour afficher un DatePicker J'ai implémenté le délégué pour la date UITextField, mais une fois que je sélectionne un autre UITextField pour la saisie de texte, le DatePicker reste en arrière-plan. Ensuite, j'ai essayé de mettre en œuvre le délégué a également pour une autre UITextField, avec ce code:
- (void)viewDidLoad {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy"];
NSString *stringFromDate = [formatter stringFromDate:[NSDate date]];
NSLog(@"IN - AddExpenseViewController::viewDidLoad %s",stringFromDate);
date.text = stringFromDate;
datePicker.hidden = YES;
date.delegate = self;
amount.delegate = self;
isIncome = NO;
[super viewDidLoad]; }
// ...
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
NSLog(@"IN - AddExpenseViewController::textFieldShouldBeginEditing %@",textField.placeholder);
if (![textField.placeholder isEqual:[NSString stringWithFormat:@"Date"]]) {
[self hideDatePicker];
[textField becomeFirstResponder];
return YES;
}
else {
[self showDatePicker];
}
return NO;}
Le problème est que lorsque je sélectionne la date TextField et que le montant, le délégué est appelé en boucle:
2010-12-05 13: 15: 17,324 AddExpense [1179: 207] IN - AddExpenseViewController :: textFieldShouldBeginEditing Montant 2010-12-05 13: 15: 17,324 AddExpense [1179: 207 ] IN - AddExpenseViewController :: hideDatePicker 2010-12-05 13: 15: 17.325 AddExpense [1179: 207] IN - AddExpenseViewController :: textFieldShouldBeginEditing Quantité 2010-12-05 13: 15: 17.326 AddExpense [1179: 207] IN - AddExpenseViewController :: hideDatePicker 2010- 12-05 13: 15: 17,327 AddExpense [1179: 207] IN - AddExpenseViewController :: textFieldShouldBeginEditing Montant 2010-12-05 13: 15: 17,327 AddExpense [1179: 207] IN - AddExpenseViewController :: hideDatePicker
et il est pas moyen de l'arrêter! Quel est le problème avec mon code?
Merci à l'avance, AM
Salut, je sais que textFieldShouldBeginEditing: est envoyé à chaque fois, mais je ne comprends pas pourquoi c'est en boucle sur cette méthode! Je m'attendrais à le voir appelé juste une fois, pour ne pas avoir mon programme verrouillé par ceci ... – wheisenberg
textFieldShouldBeginEditing: -> [textField becomeFirstResponder] -> truc interne -> textFieldShouldBeginEditing: -> [textField becomeFirstResponder] -> truc interne -> ... – Kentzo