我有三个文本字段。它们由UI Picker选项填充。第一个文本字段text1
不会重新签名选择器,其他两个框可以正常工作。我已检查并三重检查代码。我真的不明白为什么它不会辞职。
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSInteger selectedRow = [select selectedRowInComponent:0];
if([text1 isFirstResponder])
text1.text = [arrStatus objectAtIndex: selectedRow];
else{
NSInteger selectedRow = [select2 selectedRowInComponent:0];
if ([text2 isFirstResponder])
text2.text = [arrStatus2 objectAtIndex: selectedRow];
else{
NSInteger selectedRow = [select3 selectedRowInComponent:0];
if ([text3 isFirstResponder])
text3.text = [arrStatus3 objectAtIndex: selectedRow];
}
[text1 resignFirstResponder]; //<<<wont resign first responder
[text2 resignFirstResponder];
[text3 resignFirstResponder];
}
}
更新 - 我可以使用按钮退出text1
,由于某种原因它不会在didSelectRow
方法中退出
答案 0 :(得分:0)
好的,你可以尝试一件事。
将textField分配给textFieldDidbeginEditing
在你的picker方法中重新签名memberVariable对象。
而不是在if条件内重新调整键盘。你能把它放在外面吗? 请尝试这样的事情。
{
{
NSInteger selectedRow = [select selectedRowInComponent:0];
if([text1 isFirstResponder])
text1.text = [arrStatus objectAtIndex: selectedRow];
else
{
NSInteger selectedRow = [select2 selectedRowInComponent:0];
if ([text2 isFirstResponder])
text2.text = [arrStatus2 objectAtIndex: selectedRow];
else
{
NSInteger selectedRow = [select3 selectedRowInComponent:0];
if ([text3 isFirstResponder])
text3.text = [arrStatus3 objectAtIndex: selectedRow];
}
}
}
[selectedTextField resignFirstResponder];
}
答案 1 :(得分:0)
修正了这个问题,花了大括号来救援!
{
{
NSInteger selectedRow = [select selectedRowInComponent:0];
if([text1 isFirstResponder])
{
text1.text = [arrStatus objectAtIndex: selectedRow];
[text1 resignFirstResponder];
}
else{
NSInteger selectedRow = [select2 selectedRowInComponent:0];
if ([text2 isFirstResponder])
{
text2.text = [arrStatus2 objectAtIndex: selectedRow];
[text2 resignFirstResponder];
}
else{
NSInteger selectedRow = [select3 selectedRowInComponent:0];
if ([text3 isFirstResponder])
{
text3.text = [arrStatus3 objectAtIndex: selectedRow];
[text3 resignFirstResponder];
}
}
}
}