0
点赞
收藏
分享

微信扫一扫

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 条评论