iOS setDelaysTouchesBegan 详解

iOS setDelaysTouchesBegan 详解

//setDelaysTouchesBegan:NO 会直接将触摸事件发送给视图

//setDelaysTouchesBegan:YES 在手势识别过程中不会将触摸事件发送给视图 只有当手势识别失败时才会发送给视图

注意setDelaysTouchesBegan:YES使用不当可能会造成UI无响应 特殊是手势发生在UIScrollView上。

#import "TestView.h"

@implementation TestView

- (instancetype)initWithFrame:(CGRect)frame{
    if (self == [super initWithFrame:frame]) {
        [self setupUI];
    }
    return self;
}

- (void)setupUI{
    UITapGestureRecognizer *doubleGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureAction:)];
    doubleGesture.numberOfTouchesRequired = 1;
    doubleGesture.numberOfTapsRequired = 2;
    [self addGestureRecognizer:doubleGesture];

//    [doubleGesture setDelaysTouchesBegan:YES];
    [doubleGesture setDelaysTouchesBegan:NO];
}

//setDelaysTouchesBegan:NO 会直接将触摸事件发送给视图
//setDelaysTouchesBegan:YES 在手势识别过程中不会将触摸事件发送给视图 只有当手势识别失败时才会发送给视图


- (void)tapGestureAction:(UITapGestureRecognizer *)gesture{

    //[doubleGesture setDelaysTouchesBegan:NO];
    //    2017-06-27 15:33:34.183 test_tableView_pan_01[43344:2122077] touchBegin
    //    2017-06-27 15:33:34.186 test_tableView_pan_01[43344:2122077] indexPath is 0
    //    2017-06-27 15:33:34.378 test_tableView_pan_01[43344:2122077] tapGestureAction

    NSLog(@"tapGestureAction");

    //[doubleGesture setDelaysTouchesBegan:YES];
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    NSLog(@"%s", __func__);

}

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    NSLog(@"%s", __func__);
    return [super hitTest:point withEvent:event];

}

//[doubleGesture setDelaysTouchesBegan:NO];
//双击
//2017-06-27 16:13:16.991 test_delaysTouchsBegan_01[1391:31653] -[TestView hitTest:withEvent:]
//2017-06-27 16:13:16.992 test_delaysTouchsBegan_01[1391:31653] -[TestView hitTest:withEvent:]
//2017-06-27 16:13:17.136 test_delaysTouchsBegan_01[1391:31653] -[TestView hitTest:withEvent:]
//2017-06-27 16:13:17.136 test_delaysTouchsBegan_01[1391:31653] -[TestView hitTest:withEvent:]
//2017-06-27 16:13:17.241 test_delaysTouchsBegan_01[1391:31653] tapGestureAction

//[doubleGesture setDelaysTouchesBegan:YES];
//双击
//2017-06-27 16:14:10.163 test_delaysTouchsBegan_01[1419:32992] -[TestView hitTest:withEvent:]
//2017-06-27 16:14:10.163 test_delaysTouchsBegan_01[1419:32992] -[TestView hitTest:withEvent:]
//2017-06-27 16:14:10.164 test_delaysTouchsBegan_01[1419:32992] -[TestView touchesBegan:withEvent:]
//2017-06-27 16:14:10.308 test_delaysTouchsBegan_01[1419:32992] -[TestView hitTest:withEvent:]
//2017-06-27 16:14:10.308 test_delaysTouchsBegan_01[1419:32992] -[TestView hitTest:withEvent:]
//2017-06-27 16:14:10.437 test_delaysTouchsBegan_01[1419:32992] tapGestureAction

@end
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值