UITableViewCell 和 resignFirstResponder
Posted
技术标签:
【中文标题】UITableViewCell 和 resignFirstResponder【英文标题】:UITableViewCell and resignFirstResponder 【发布时间】:2011-07-26 22:08:56 【问题描述】:我有一个UITableView
,每个单元格中都包含一个UITextField
。当用户点击UITextField
时,正如预期的那样,键盘会弹出。
我已经在我的委托 tableView: didSelectRowAtIndexPath:
方法中实现了将resignFirstResponder
发送到最后使用的UITextField
来关闭键盘。
如果显示最后使用UITextField
的单元格,一切正常。
现在,如果我向下滚动到 tableview 的底部并按下一行,那么 resignFirstResponder
将发送到隐藏的 UITextField
并且不会隐藏键盘。它也不会抛出错误。
在这种情况下如何隐藏键盘?
【问题讨论】:
为什么不用回车键? 键盘类型是数字键盘... 【参考方案1】:看看UITextFieldDelegate并把
[textField resignFirstResponder];
回调函数之一中的方法。我特别喜欢:
- (BOOL)textFieldShouldReturn:(UITextField *)textField;
【讨论】:
- (BOOL)textFieldShouldReturn:(UITextField *)textField;在我的情况下根本没有调用。 这个方法在点击返回/完成按钮时被调用。如果这不完全适合您,您应该为其他操作选择回调。 我的键盘类型是数字键盘,所以我没有返回/完成按钮。而且我不需要它来做其他任何事情,所以我认为该方法行不通…… 你看过我上一条评论了吗?我的键盘类型是数字键盘。没有返回,完成,去等等... 右下角的按钮。只有删除按钮。 谢谢。那个帖子解决了。我只需要添加 [self.view endEditing:YES];【参考方案2】:您是否尝试调用UITextField
的endEditing:YES
方法?
【讨论】:
这应该让第一响应者辞职。键盘类型无关紧要。不确定这是否可行,但您可以尝试:) 不,不起作用。不是 endEditing 或 setEditing (就像你最初提到的那样)。 setEditing 是错误的,因为编辑属性是只读的,只是有点混乱......【参考方案3】:-(IBAction)hidekey:(id) sender
[textField resignFirstResponder];
如果您使用界面生成器,则检查文本字段的出口并在 .m 文件中使用上述函数并为该文本字段定义。它会起作用的。
【讨论】:
你想问什么?我给这个隐藏键盘。 请解释得更好...“如果您使用界面生成器然后检查文本字段的出口”是什么意思?特别是“然后检查文本字段的出口”?【参考方案4】:请使用本教程到Create a return Key for UIKeyboardTypeNumberPad !这应该会为您节省大量时间。
【讨论】:
以上是关于UITableViewCell 和 resignFirstResponder的主要内容,如果未能解决你的问题,请参考以下文章
Swift3:UITableViewCell 和 UIButton - 通过单击 UIButton 显示和隐藏 UITableViewCell
UITableViewcell 和 UITableVIew 上的手势识别器