【发布时间】:2009-04-25 06:29:10
【问题描述】:
我的UIView 上有一个UIPickerView 和一个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 的值,他们首先必须从选择器中选择其他值,然后选择第一行。
【问题讨论】:
-
如果可以,请发布一些与此问题相关的代码。这将有助于排除故障。
标签: iphone uitextfield uipickerview