UIPickerView
我有一个UIView
和一个UITextField
。我让用户从选择器中选择一个值或在文本字段中输入一个自定义值。
当用户从选择器中选择任何选项时,变量值会被很好地更改(在pickerView:didSelectRow:inComponent:
)方法中。但是如果用户没有在选择器上选择任何值(因为他们想选择已经选择的第一个选项),则不会调用此方法并且选择不会反映在变量中。
我尝试将变量的默认值设置为选择器中的第一个选项。但在这种情况下,当用户编辑文本字段时,变量将具有文本字段的文本。现在,如果用户决定再次选择第一个值,则新值不会反映在变量中。
我该如何克服呢?谢谢。
这是相关代码
在我viewDidLoad
的这个语句中selectText
,默认情况下将选择器的第一个选项设置为
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate 的 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]]];
}
当用户编辑文本然后决定他毕竟要使用选择器的第一个值时,就会出现问题。在这种情况下,他们将关闭键盘并单击选择器的第一个选项(已被选中)。此操作不会调用didSelectRow
,因此 selectText 的值不会更改。
为了让用户能够更改 的值selectText
,他们首先必须从选择器中选择一些其他值,然后选择第一行。