Ich habe eine UIPickerView
auf meinem UIView
zusammen mit einem UITextField
. Ich lasse den Benutzer einen Wert aus der Auswahl auswählen oder einen benutzerdefinierten Wert in das Textfeld eingeben.UIPickerView - erste Zeile Auswahl ruft nicht didSelectRow
Wenn der Benutzer eine Option aus der Auswahl auswählt, werden die Variablenwerte (in der pickerView:didSelectRow:inComponent:
) Methode in Ordnung geändert. Wenn der Benutzer jedoch keinen Wert für die Auswahl auswählt (weil er die erste Option auswählen möchte, die bereits ausgewählt ist), wird diese Methode nicht aufgerufen und die Auswahl wird nicht in der Variablen wiedergegeben.
Ich habe versucht, den Standardwert der Variablen auf die erste Option in der Auswahl festzulegen. Aber in diesem Fall, wenn der Benutzer das Textfeld bearbeitet, hat die Variable den Text des Textfelds. Wenn der Benutzer nun entscheidet, den ersten Wert erneut auszuwählen, wird der neue Wert nicht in der Variablen wiedergegeben.
Wie kann ich das überwinden? Vielen Dank.
Hier ist der entsprechende Code
In meinem viewDidLoad
Ich habe diese Aussage die selectText
auf erste Option des Pickers durch Standard festlegen
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate des 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]]];
}
Das Problem tritt auf, wenn der Benutzer den Text bearbeitet und dann entscheidet er sich schließlich will der erste Wert des Picker verwenden. In diesem Fall werden sie die Tastatur verwerfen und auf die erste Option der Auswahl klicken (die bereits ausgewählt ist). Diese Aktion ruft didSelectRow
nicht auf und so wird der Wert von SelectText nicht geändert.
Damit der Benutzer den Wert selectText
ändern kann, muss er zuerst einen anderen Wert aus der Auswahl auswählen und dann die erste Zeile auswählen.
Wenn Sie können, bitte posten Sie einige Ihrer Code, wie es zu diesem Problem betrifft. Dies hilft bei der Fehlerbehebung. –