当用户点击视图边界之外时,有什么办法让UIView退出其第一响应者状态?让UIView在视图外部点击时退出第一响应者
1
A
回答
2
在其他视图或视图中捕捉触摸。在处理该触摸时,请调用一个让您的视图恢复响应者状态的选择器。
0
做研究时发现更好的答案...
Get the current first responder without using a private API
有如何导航意见,找到的第一个响应者,其可作为您的解决方案的基础示例代码
您可以先放置透明视图,然后再将视图作为子视图。然后,可以使用透明视图中的任何触摸事件来辞退第一响应者。
如果有多个视图,这可能是一种方法,主视图的边界之外进行管理
-1
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[yourtextfield resignFirstResponder];
//You can have multiple textfields in here
}
0
这是很简单的,需要在两个步骤覆盖:
- 添加手势识别器赶上视图抽头
- 辞职第一响应
感谢@Nathan Eror为first part。我们可以添加一个手势识别器到viewDidLoad方法来注册时,用户点击屏幕:
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleFingerTap];
下一步,我们将增加检测此功能和代码来清除键盘:
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:[recognizer.view superview]];
[textField resignFirstResponder];
}
值得注意的是,如果您的视图中有多个textField,您将需要全部辞职,因为没有办法知道哪个是当前的第一响应者。
相关问题
- 1. UITableView - 在外部触摸上退出第一响应者
- 2. TextField不会使用UIModalPresentationFormSheet视图退出第一响应者
- 3. UITextField不会退出第一响应者?
- 4. UIView带走第一响应者状态
- 5. 在点击任何部分视图时退出键盘
- 6. 使UITextField从另一个类别中退出第一响应者
- 7. iPad不退出响应者
- 8. 如何检查控件是否退出第一响应者或成为第一响应者?
- 9. 保持UITextField不会退出第一个响应者的状态
- 10. 停止UISearchDisplay控制器从退出第一响应者键盘
- 11. 第一响应者
- 12. 退出应用程序第二次后退按钮点击 - Android
- 13. iPhone第一响应者
- 14. 找出UITextfield的结束编辑而不退出第一响应者
- 15. 列表视图不响应点击
- 16. Obj C - 先接触第一响应者UIView
- 17. 如何获取请求成为第一响应者的UIView?
- 18. Android:父级以外的子视图不响应点击事件
- 19. UITextField不会成为收集视图中的第一响应者
- 20. 如何让ANTLR 3.2在第一次出错时退出?
- 21. 文件所有者+第一响应者
- 22. Tkinter退出按钮让exe无响应
- 23. “粘贴”文本到外部Mac应用程序第一响应者
- 24. 在MFMailComposeViewController中设置第一响应者?
- 25. 解除与UISearchBar的键盘,而不会退出第一响应者
- 26. 干净的方式退出NSSearchField的第一响应者完成后?
- 27. Android的网页视图回压点击回去双击退出
- 28. Android - 当点击视图外部时关闭popUpWindow
- 29. UIView子视图没有响应变化
- 30. UIView子视图不响应代表
你能否解释一下你的答案,至少粗略一点? – 2015-01-09 14:40:43
当用户在屏幕上触摸时,这个委托方法将会调用,因为这是UIViewController类的子类viewcontroller类。所以在调用此方法时,我们调用UITextField委托方法“resignFirstResponder”。 – 2015-01-10 12:05:45