Iphone 使用UIGestureRecognitor收听UITouch事件
我正在创建自定义UIView并在其上添加UIAPTgestureRecognitor。我有一个轻拍手势的处理程序。但同时,我希望我的UIView能够收听touchBegind和touchSended方法。我还实现了GestureRecognitor:shouldReceiveTouch:method,但不会调用ToucheSBegind/touchesEnded方法。有什么线索吗 在我的自定义UIView中Iphone 使用UIGestureRecognitor收听UITouch事件,iphone,objective-c,ios,cocoa-touch,uigesturerecognizer,Iphone,Objective C,Ios,Cocoa Touch,Uigesturerecognizer,我正在创建自定义UIView并在其上添加UIAPTgestureRecognitor。我有一个轻拍手势的处理程序。但同时,我希望我的UIView能够收听touchBegind和touchSended方法。我还实现了GestureRecognitor:shouldReceiveTouch:method,但不会调用ToucheSBegind/touchesEnded方法。有什么线索吗 在我的自定义UIView中 - (BOOL)gestureRecognizer:(UIGestureRecogniz
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)iGestureRecognizer shouldReceiveTouch:(UITouch *)iTouch {
return YES;
}
我的视图控制器内部
MyCustomView aCustomView = [[[MyCustomView alloc] init] autorelease];
UIGestureRecognizer *myGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[aCustomView addGestureRecognizer:myGestureRecognizer];
[myGestureRecognizer release];
您需要将手势识别器的
cancelsTouchesInView
(很可能是delaysTouchesBegan
和delaystouchesend
)设置为NO
。手势识别器的默认行为是避免它和视图同时处理触摸。这些设置允许您微调该行为。如前所述,您需要在UITapGestureRecognitizer
上将cancelTouchesInView
属性设置为NO
从苹果文档:
取消触摸视图如果手势识别器识别出其手势,
这会从他们的角度解开这个手势的剩余部分(所以
窗户不能送他们)。该窗口取消先前的设置
通过(touchesCancelled:withEvent:)消息传递触摸。如果
手势识别器无法识别其手势,视图接收
多点触摸序列中的所有触摸
进一步阅读:
我一直认为touchesbreated只适用于主视图控制器的视图。我真希望我能得到你提到的那种行为。我使用的是默认设置,但我的touch方法仍然会被调用。请看我的问题:@RobNapier未能将cancelsTouchesInView与我的问题联系在一起: