1

可能重复:
通过触摸 UITableView 的背景关闭键盘

当用户单击其他地方时,如何使键盘消失?

注意:我知道如何通过向 UITextField 发送 resignFirstResponder 命令来使键盘消失。目前,“完成”按钮已连接到所有正确的代码来执行此操作,并且可以正常工作。

我有一个具有不同 UITableViewCells 的 UITableView,如果用户移动到另一个单元格,我希望键盘消失。

那么我还需要在哪些事件中包含 resignFirstResponder 才能使键盘消失。

假设 UITableViewCell A 有 UITextField,而 UITableViewCell B 有一个按钮。如果用户按下单元格 B 中的按钮,那么我需要将命令 resignFirstResponder 发送回单元格 A 中的 UITextField。首先,按钮不知道应该将命令发送到哪个单元格,其次即使按钮不知道将命令发送到哪个单元格呢?

4

2 回答 2

0

您可以创建一个通用的“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'

此外,当上述解决方案不起作用时,请参阅这篇文章以获得关闭键盘的绝妙解决方案:stackoverflow question 1823317

于 2011-01-18T18:03:36.633 回答
0

没有简单的方法可以做到这一点。您可以在占据屏幕其余部分的文本字段周围放置一组透明的“屏蔽视图”,并使用对它们的任何触摸来关闭键盘。

于 2011-01-12T02:19:23.053 回答