所以我有一个自创的顶部控制器,它正在我的其他控制器视图中实现。我在这个顶栏上有一个文本字段。我想知道如果用户点击键盘外的任何键盘,键盘解除的最佳方法是什么。我有一个轻敲手势识别器,执行方法dismisskeyboard。但是,这仅在用户单击键盘外部的顶部栏时才有效。有没有办法设置它,所以如果用户点击屏幕上的任何一个,那么这将解除键盘?
答案 0 :(得分:1)
您可以尝试为文本字段提供一个透明的inputAccessoryView,其大小可以填充屏幕的其余部分,可以捕获点击并解除键盘。
答案 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];
创建方法hideOverlay
以关闭键盘并隐藏透明:
-(void)hideOverlay:(id)sender {
UIView* overlay = sender;
[overlay removeFromSuperview];
[self.textField resignFirstResponder];
}
理想情况下,您应该在textFieldDidBeginEditing:
的{{1}}协议方法中调用第一个代码块,然后相应地注册您的调用类。
希望它有所帮助。