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