iOS UITextField resignFirstResponder 问题
Posted
技术标签:
【中文标题】iOS UITextField resignFirstResponder 问题【英文标题】:iOS UITextField resignFirstResponder issue 【发布时间】:2017-02-15 12:01:46 【问题描述】:在我的应用程序中,在注册屏幕上,我有tableView
,每个单元格中都包含UITextField
,页脚中的提交按钮。一切正常,除非我在最后一个 TextField
中输入值并点击提交按钮(不退出键盘)。我的函数没有显示值,因为只有在文本编辑结束时才输入值。我正在使用 Delegate 来获取值。
我的代码是: 在 customcell.m 中:
- (void)textFieldDidEndEditing:(UITextField *)textField
if ([textField.text length] >0)
[self.cellImageview setImage:editImage];
else
[self.cellImageview setImage:defaultImage];
[_delegate signUpTableCell:self didUpdateValue:textField.text inTextField:textField];
在我的视图控制器中:
-(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField
NSLog(@"cell:%@ value: %@ textfield value:%@ ", cell, value, textField.text);
[registerDictionary setValue:value forKey:textField.placeholder];
NSLog(@"registerDictionary:%@", registerDictionary);
问题:
当我单击提交按钮时,最后一个 textField 值为 nil,可能是因为
-(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField
除非 textField 结束编辑,否则不会接到电话。如果我在空白处单击并退出键盘,它就可以正常工作。有办法解决这个问题吗?
【问题讨论】:
【参考方案1】:您是否尝试在单击按钮时手动调用resignFirstResponder()
?
【讨论】:
是的,我做了,没用。它辞去第一响应者但无法获得价值 所以你的键盘实际上消失了,你的textFieldDidEndEditing()
方法正在被调用,但 didUpdateValue()
没有被调用?您能否通过手动调用resignFirstResponder()
来检查是否调用了这些方法中的任何一个?【参考方案2】:
在提交按钮中添加以下代码:
[self.view endEditing:yes];
或使用
[self.yourTableview.scrollView endEditing:yes];
【讨论】:
已经这样做了,但我仍然无法在 registerDictionary 数组中获得价值【参考方案3】:通过对我的代码进行一些更改来修复它。从 registerDictionary
获得值后,我使用了 [self.view endEditing:yes];
。我真傻。
【讨论】:
以上是关于iOS UITextField resignFirstResponder 问题的主要内容,如果未能解决你的问题,请参考以下文章