我想要一个非常简单的事情 - 在我的顶级控制器(导航控制器)中设置一个轻敲手势识别器,它将捕获视图上的所有水龙头。目前,当我点击一个按钮时,系统甚至不想打扰我的识别器(gestureRecognizer:shouldReceiveTouch:
委托方法除外,我返回YES
)。相反,它只是执行按钮单击。所以我想安装最强大的"视图层次结构上的识别器,无论如何。
答案 0 :(得分:1)
您可以尝试在所有其他视图的顶部放置一个空的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