J'ai un UIPickerView
sur mon UIView
avec un UITextField
. Je laisse l'utilisateur sélectionner une valeur dans le sélecteur ou entrer une valeur personnalisée dans le champ de texte.UIPickerView - 1ère sélection de ligne ne pas appeler didSelectRow
Lorsque l'utilisateur sélectionne une option du sélecteur, les valeurs des variables sont modifiées avec précision (dans la méthode pickerView:didSelectRow:inComponent:
). Mais si l'utilisateur ne sélectionne aucune valeur sur le sélecteur (car ils veulent sélectionner la première option qui est déjà sélectionnée), cette méthode n'est pas appelée et la sélection n'est pas reflétée dans la variable.
J'ai essayé de définir la valeur par défaut de la variable sur la première option du sélecteur. Mais dans ce cas, lorsque l'utilisateur édite le champ de texte, la variable aura le texte du champ de texte. Maintenant, si l'utilisateur décide de reprendre la première valeur, la nouvelle valeur n'est pas reflétée dans la variable.
Comment puis-je surmonter cela? Merci.
Voici le code correspondant
Dans mon viewDidLoad
j'ai cette déclaration pour définir la selectText
à première option du sélecteur par défaut
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate de didSelectRow
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// report the selection to the UI label
[self setSelectText:[myArray objectAtIndex:[pickerView selectedRowInComponent:0]]];
}
Le problème se pose lorsque l'utilisateur modifie le texte, puis décide qu'il veut après tout utiliser la première valeur du sélecteur. Dans ce cas, ils vont rejeter le clavier et cliquer sur la 1ère option du sélecteur (qui est déjà sélectionné). Cette action n'appelle pas didSelectRow
et la valeur de selectText n'est donc pas modifiée.
Pour que l'utilisateur puisse modifier la valeur de selectText
, il doit d'abord sélectionner une autre valeur dans le sélecteur, puis sélectionner la première ligne.
Si vous le pouvez, veuillez poster une partie de votre code en ce qui concerne ce problème. Cela aidera avec le dépannage. –