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

时间:2010-12-08 07:51:40

标签: uitableview uitextfield uikeyboard

  

可能重复:
  Dismiss keyboard by touching background of UITableView

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

注意:我知道如何通过将resignFirstResponder命令发送到UITextField来使键盘消失。目前,“完成”按钮连接到所有正确的代码,这样做,这是有效的。

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

那么我还需要将resignFirstResponder包含在哪些事件中,以便键盘消失。

假设UITableViewCell A有UITextField,UITableViewCell B有一个按钮。如果用户按下单元格B中的按钮,那么我将需要将命令resignFirstResponder发送回单元格A中的UITextField。首先,按钮不知道它应该将命令发送到哪个单元格,第二个即使按钮也是如此确实知道哪个单元发送命令会怎么样?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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