iOS 点击识别器捕捉所有点击
iOS tap recognizer to catch all taps
我想要一个非常简单的东西 - 在我的顶部控制器(它是导航控制器)中设置一个点击手势识别器,它将捕获视图中所有位置的所有点击。目前,当我点击一个按钮时,系统甚至不会考虑打扰我的识别器(除了 gestureRecognizer:shouldReceiveTouch:
委托方法,我在其中 return YES
)。相反,它只是执行一个按钮点击。所以无论如何我都想在视图层次结构上安装 "the strongest" 识别器。
您可以尝试将一个空的 UIView 放在所有其他视图之上,然后向其添加 UITapGestureRecognizer。我们对帮助叠加做类似的事情。最大的问题是弄清楚如何以及何时忽略触摸,以便底层按钮在需要时得到它们。
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *b = [UIButton buttonWithType:UIButtonTypeInfoDark];
b.frame = CGRectMake(50,50, b.bounds.size.width, b.bounds.size.height );
[self.view addSubview:b];
UIView *invisibleView = [[UIView alloc] initWithFrame:self.view.bounds];
invisibleView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[invisibleView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHit:)]];
[self.view addSubview:invisibleView];
}
-(void)tapHit:(UITapGestureRecognizer*)tap {
NSLog( @"tapHit" );
}
@end
我想要一个非常简单的东西 - 在我的顶部控制器(它是导航控制器)中设置一个点击手势识别器,它将捕获视图中所有位置的所有点击。目前,当我点击一个按钮时,系统甚至不会考虑打扰我的识别器(除了 gestureRecognizer:shouldReceiveTouch:
委托方法,我在其中 return YES
)。相反,它只是执行一个按钮点击。所以无论如何我都想在视图层次结构上安装 "the strongest" 识别器。
您可以尝试将一个空的 UIView 放在所有其他视图之上,然后向其添加 UITapGestureRecognizer。我们对帮助叠加做类似的事情。最大的问题是弄清楚如何以及何时忽略触摸,以便底层按钮在需要时得到它们。
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *b = [UIButton buttonWithType:UIButtonTypeInfoDark];
b.frame = CGRectMake(50,50, b.bounds.size.width, b.bounds.size.height );
[self.view addSubview:b];
UIView *invisibleView = [[UIView alloc] initWithFrame:self.view.bounds];
invisibleView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[invisibleView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapHit:)]];
[self.view addSubview:invisibleView];
}
-(void)tapHit:(UITapGestureRecognizer*)tap {
NSLog( @"tapHit" );
}
@end