los*_*sit 19 iphone uipickerview uitextfield
我UIPickerView和我UIView在一起UITextField.我让用户从选择器中选择一个值或在文本字段中输入自定义值.
当用户从选择器中选择任何选项时,变量值将在(pickerView:didSelectRow:inComponent:方法中)改变.但是如果用户没有在选择器上选择任何值(因为他们想要选择已经选择的第一个选项),则不会调用此方法,并且选择不会反映在变量中.
我尝试将变量的默认值设置为选择器中的第一个选项.但在这种情况下,当用户编辑文本字段时,变量将具有文本字段的文本.现在,如果用户决定再次选择第一个值,则新值不会反映在变量中.
我怎么能克服这个?谢谢.
这是相关的代码
在我的viewDidLoad我有这个语句selectText默认情况下设置选择器的第一个选项
[self setSelectText:[myArray objectAtIndex:0]];
Run Code Online (Sandbox Code Playgroud)
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
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]]];
}
Run Code Online (Sandbox Code Playgroud)
当用户编辑文本然后决定他想要使用选择器的第一个值时,就会出现问题.在这种情况下,他们将关闭键盘并单击选择器的第一个选项(已选中).此操作不会调用didSelectRow,因此selectText的值不会更改.
为了使用户能够更改其值selectText,他们首先必须从选择器中选择一些其他值,然后选择第一行.
Ben*_*zar 26
每次使用此代码进行选择时,不要"推"选择器的值:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
Run Code Online (Sandbox Code Playgroud)
当用户使用类似于以下内容的单击按钮(或您正在使用的其他事件)时,您应该"拉动它":
- (void)myAction:(id)sender
{
NSInteger row = [myPicker selectedRowInComponent:0];
selectedText = [myArray objectAtIndex:(NSUInteger)row];
}
Run Code Online (Sandbox Code Playgroud)
用于清除文本:UITextField该类提供用于清除当前文本的内置按钮.因此,如果用户不想要该文本,他可以丢弃它.
myTextField.clearButtonMode = UITextFieldViewModeAlways;
Run Code Online (Sandbox Code Playgroud)
所以在脚本中,你会检查TextField它是否有值,如果它有值,你使用TextField,如果它没有值,你从中提取信息Picker.
您可以直接调用委托的方法,例如
picker.delegate?.pickerView?(picker, didSelectRow: 0, inComponent: 0)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27081 次 |
| 最近记录: |