我有两个 UITextField 实例。第returnKeyType
一个文本字段的 是UIReturnKeyNext
,returnKeyType
第二个文本字段是UIReturnKeyDone
。基于这个 SO answer,我正在尝试在单击“下一步”按钮时辞去第一个文本字段的第一响应者,然后让第二个文本字段成为第一响应者。当在第二个文本字段上单击“完成”按钮时,第一响应者辞职,键盘消失。
下面是我的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == _textFieldOne){
[_textFieldOne resignFirstResponder];
[settingsDictionary setObject: _textFieldOne.text forKey:@"TextFieldOneInfo"];
[settingsDictionary stringValueForKey:@"TextFieldOneInfo"];
[self postNotificationSettingsUpdate:settingsDictionary];
didTestPostNotificationSettings = YES;
[_textFieldTwo becomeFirstResponder];
}
if (textField == _textFieldTwo){
[_textFieldTwo resignFirstResponder];
}
return YES;
}
单击“下一步”按钮时,第一个文本字段成功退出第一响应者,第二个文本字段确实成为新的第一响应者。但是,在单击“完成”按钮之前,第二个文本字段似乎立即放弃了它的第一响应者状态。
谁能告诉我为什么第二个文本字段在单击“完成”按钮之前退出它的第一响应者状态?谢谢!
编辑我已将问题缩小到以下代码行:
[self postNotificationSettingsUpdate:settingsDictionary];
当它被注释掉时,文本字段返回按钮操作按预期运行。