gpt4 book ai didi

iphone - UIPickerView - 第一行选择不调用 didSelectRow

转载 作者:行者123 更新时间:2023-12-03 18:19:49 25 4
gpt4 key购买 nike

我的 UIView 上有一个 UIPickerView 以及一个 UITextField。我让用户从选择器中选择一个值或在文本字段中输入自定义值。

当用户从选择器中选择任何选项时,变量值会发生细微变化(在 pickerView:didSelectRow:inComponent: 中)方法。但是,如果用户没有在选择器上选择任何值(因为他们想要选择已选择的第一个选项),则不会调用此方法,并且选择不会反射(reflect)在变量中。

我尝试将变量的默认值设置为选择器中的第一个选项。但在这种情况下,当用户编辑文本字段时,变量将具有文本字段的文本。现在,如果用户决定再次选择第一个值,新值不会反射(reflect)在变量中。

我该如何克服这个问题?谢谢。

这是相关代码

在我的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 的值,他们首先必须从选择器中选择其他值,然后选择第一行。

最佳答案

每次使用以下代码进行选择时,不要“推送”选择器的值:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

当用户单击按钮(或您正在使用的其他事件)时,您应该使用类似于以下内容的内容“拉动它”:

- (void)myAction:(id)sender
{

NSInteger row = [myPicker selectedRowInComponent:0];
selectedText = [myArray objectAtIndex:(NSUInteger)row];


}

用于清除文本:UITextField 类提供了一个用于清除当前文本的内置按钮。因此,如果用户不想要该文本,他可以将其丢弃。

myTextField.clearButtonMode = UITextFieldViewModeAlways; 

因此,在脚本中,您会检查 TextField 是否有值,如果确实有值,则使用 TextField,如果没有值,则从中提取信息选择器

关于iphone - UIPickerView - 第一行选择不调用 didSelectRow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com