关闭键盘

时间:2014-02-26 19:56:00

标签: ios objective-c dismiss

所以我有一个自创的顶部控制器,它正在我的其他控制器视图中实现。我在这个顶栏上有一个文本字段。我想知道如果用户点击键盘外的任何键盘,键盘解除的最佳方法是什么。我有一个轻敲手势识别器,执行方法dismisskeyboard。但是,这仅在用户单击键盘外部的顶部栏时才有效。有没有办法设置它,所以如果用户点击屏幕上的任何一个,那么这将解除键盘?

2 个答案:

答案 0 :(得分:1)

您可以尝试为文本字段提供一个透明的inputAccessoryView,其大小可以填充屏幕的其余部分,可以捕获点击并解除键盘。

答案 1 :(得分:1)

我想描述的方法是黑客但仍然有效。

  1. 使用UIButton的框架创建透明view,如下所示:

    UIButton* overlay = [UIButton buttonWithType:UIButtonTypeCustom];
    overlay.frame = self.view.bounds;
    overlay.backgroundColor = [UIColor clearColor];
    [overlay addTarget:self action:@selector(hideOverlay:) forControlEvents:UIControlEventTouchDown];
    [self.view.subviews[0] insertSubview:overlay belowSubview:self.textField];
    
  2. 创建方法hideOverlay以关闭键盘并隐藏透明:

    -(void)hideOverlay:(id)sender {
        UIView* overlay = sender;
        [overlay removeFromSuperview];
        [self.textField resignFirstResponder];
    }
    
  3. 理想情况下,您应该在textFieldDidBeginEditing:的{​​{1}}协议方法中调用第一个代码块,然后相应地注册您的调用类。

    希望它有所帮助。