我有一个看起来像那样的 View 层次结构
UIScrollView
|
+- UIView
|
+- UITextField
+- UITextField
+- UIButton
我想要的是让点击其中一个文本字段并在屏幕上看到键盘的用户能够点击 UIView 的“空白区域”来隐藏键盘。因此,例如,我不希望 UIButton 的事件冒泡到 UIView(这正是我将 UITapGestureRecognizer 添加到 UIView 时发生的情况)。
如何实现所需的功能?
最佳答案
在您的 viewDidLoad
方法中添加此手势识别器:
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
gestureRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:gestureRecognizer];
然后添加dismissKeyboard
方法:
- (void) dismissKeyboard{
[YOURFIELDHERE resignFirstResponder];
}
您还需要添加它以使按钮仍然可点击并且不会被手势识别器覆盖:
gestureRecognizer.delegate = self; // in viewDidLoad
<UIGestureRecognizerDelegate> //in your header file
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIButton class]]){
return NO;
}
return YES; // handle the touch
}
关于ios - 检测点击 UIView 的 "empty space",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101502/