Html子视图不跟随父视图缩放,怎么让子视图不触发添加到父视图上的tap手势?...

引用 4 楼 LmyangBK 的回复:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0,200, 400)];

v.backgroundColor = [UIColor redColor];

v.userInteractionEnabled = NO;

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

btn.frame = CGRectMake(0, 0, 100, 50);

[btn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];

btn.backgroundColor = [UIColor blackColor];

[v addSubview:btn];

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];

[tap addTarget:self action:@selector(tapAction)];

[self.view addGestureRecognizer:tap];

[self.view addSubview:v];

以上视图的层次结构是非常简单的,就是一个父视图self.view和子视图v.

我现在除了想到一种方法。就是在子视图v上添加上手势来屏蔽掉父视图上的手势外没想到其他方法了。

虽然我还是不知道你的意图,但是关于这个问题,可以简单说一说。

1. 如果你一定要用一个Button、一个TapGesture的方式来组织的话,你的Button实际上是触发不了的,这种情况下,你只能在TapGesture的触发方法里判断:

- (IBAction)tapAction:(UITapGestureRecognizer *)gesture {

if (CGRectContainsPoint(self.btn.frame, [gesture locationInView:self.btn])) {

NSLog(@"btn clicked.");

} else {

NSLog(@"tap clicked.");

}

}

判断点击是不是发生在Button里。

2. 放弃使用Button,用一个TapGesture来代替,这种情况下,你就有两个TapGesture了,你把self.view上的TapGesture的requireGestureRecognizerToFail:方法设置为小范围的那个Gesture,这么一来,只有当小的Gesture没有触发的情况下,大的Gesture才会被触发。

3. Button保留,self.view上的Gesture放弃,在loadView方法里,把self.view覆盖成UIControl的实例(或者在Xib里把view的Class改为UIControl),这么一来,self.view是可以直接支持点击方法的,与Button类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值