当用户单击其他地方时,如何使键盘消失? [复制]
Posted
技术标签:
【中文标题】当用户单击其他地方时,如何使键盘消失? [复制]【英文标题】:How do I make the keyboard go away when the user clicks somewhere else? [duplicate] 【发布时间】:2010-12-08 07:51:39 【问题描述】:可能重复:Dismiss keyboard by touching background of UITableView
当用户点击其他地方时,如何让键盘消失?
注意:我知道如何通过向 UITextField 发送 resignFirstResponder 命令来使键盘消失。目前“完成”按钮已连接到所有正确的代码来执行此操作。
我有一个具有不同 UITableViewCells 的 UITableView,如果用户移动到另一个单元格,我希望键盘消失。
那么我还需要在哪些事件中包含 resignFirstResponder 才能使键盘消失。
假设 UITableViewCell A 有 UITextField,而 UITableViewCell B 有一个按钮。如果用户按下单元格 B 中的按钮,那么我需要将命令 resignFirstResponder 发送回单元格 A 中的 UITextField。首先,按钮不知道应该将命令发送到哪个单元格,其次即使按钮不知道将命令发送到哪个单元格吗?
【问题讨论】:
所有 UITableViewCell 都有文本字段吗?如果只有一个,那么您可以使用 UITouches 来记录触摸是否在文本字段之外的某处注册,以使键盘消失 没有一些 UITableViewCells 有 UIButtons 有些有 UITextFields,有各种不同的 UITableViewCells 【参考方案1】:没有简单的方法可以做到这一点。您可以在占据屏幕其余部分的文本字段周围放置一组透明的“屏蔽视图”,并使用对它们的任何触摸来关闭键盘。
【讨论】:
【参考方案2】:您可以创建一个通用的“hideKeyboard”方法,您可以在其中包含所有可以成为第一响应者的文本字段。例如,
-(void) hideKeyboard
[textFieldName resignFirstResponder];
[textFieldSurname resignFirstResponder];
for (UITextField * txtField in arrTextFields)
[txtField resignFirstResponder];
然后,在您班级的各个部分,根据所需的功能,调用;
[self hideKeyBoard];
这种简单的方法意味着您无需跟踪“具有焦点”/第一响应者状态的单个项目。
如何触摸屏幕的任何部分以使键盘消失 要触摸 UITableView 之外的某个位置并让键盘消失,请在您要响应的“触摸区域”顶部放置一个不可见的按钮。然后,只需从该不可见按钮的触摸事件中调用 [self hideKeyboard]。使用 IB,将一个新的圆形按钮拖到您的视图上,然后调整其大小以占据整个屏幕大小。接下来,在 IB 文档窗口的控件列表中向上或向下拖动按钮,使按钮位于所有文本字段和按钮的后面,但在其他任何内容(如图像等)的前面。最后,将按钮的类型更改为“自定义”,使其不可见,但仍响应事件。现在您所要做的就是连接新按钮的 'touch up inside' 事件以触发 'hideKeyboard' 方法。
此外,当上述解决方案不起作用时,请参阅此帖子以了解关闭键盘的绝妙解决方案:*** question 1823317
【讨论】:
以上是关于当用户单击其他地方时,如何使键盘消失? [复制]的主要内容,如果未能解决你的问题,请参考以下文章