iOS点按识别器可以捕捉所有水龙头

时间:2015-09-27 21:53:43

标签: ios objective-c iphone uigesturerecognizer uitapgesturerecognizer

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

1 个答案:

答案 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