mad*_*per 4 objective-c uigesturerecognizer ios uitapgesturerecognizer ios8
我在一个视图中有两种不同类型的三种不同手势。
第一个是 a UITapGestureRecognizer,另外两个是UILongPressGestureRecognizer。
长按手势识别器有不同的minimumPressDuration,一个是0.15,另一个是0.50,所以我实现了以下功能,以便识别所有手势:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer *) otherGestureRecognizer{
return true;
}
Run Code Online (Sandbox Code Playgroud)
该功能确实允许识别所有手势,但问题是每当UILongPressGestureRecognizer识别出 a 时UITapGestureRecognizer,也识别出 a。
所以,我想知道如何比较中的gestureRecognizer的类型
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer *) otherGestureRecognizer
Run Code Online (Sandbox Code Playgroud)
或如何停止UITapGestureRecognizer的时候UILongPressGestureRecognizer检测,因为UITapGestureRecognizer每当触发UILongPressGestureRecognizer被触发。
与其返回YES中的所有情况shouldRecognizeSimultaneouslyWithGestureRecognizer:,如果您不想同时识别手势,您实际上应该返回NO:
- (BOOL) gestureRecognizer: (UIGestureRecognize *) gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer *) otherGestureRecognizer {
return NO;
}
Run Code Online (Sandbox Code Playgroud)
但是为了完成您显然想要完成的任务,我建议您改用不同的UIGestureRecognizerDelegate方法 -- gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:-- 这样您就可以指定哪个手势在另一个手势之前被识别。在这种情况下,由于您想UITapGestureRecognizer在UILongPressGestureRecognizer检测到a 时停止,请尝试以下操作:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
// If the gesture recognizer is a UITapGestureRecongizer, but the other
// gesture detected is a UILongPressGestureRecognizer, require the
// UITapGestureRecognizer to fail.
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]] &&
[otherGestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]]) {
return YES;
} else {
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2300 次 |
| 最近记录: |