Ben*_*air 4 objective-c ios uipangesturerecognizer
我有以下层次结构:
这些视图中的每一个都已UIPanGestureRecognizer分配。外部平移手势识别器仅对垂直平移感兴趣,因此我为此实现了委托方法:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
CGPoint velocity = [panGestureRecognizer velocityInView:panGestureRecognizer.view];
return fabs(velocity.y) > fabs(velocity.x);
}
Run Code Online (Sandbox Code Playgroud)
然而,子视图的平移手势在识别中始终优先。有没有办法让外部平移手势识别器首先识别,然后如果失败,子视图中的平移手势可以接管?
我尝试同时识别并且它有效,但随后两个识别器都开始平移:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
Run Code Online (Sandbox Code Playgroud)
从 iOS 7 开始,UIGestureRecognizerDelegate 协议已经根据您的需要声明了两个委托方法,您可以使用 | 手势识别器:shouldRequireFailureOfGestureRecognizer: | 或 | gestureRecognizerShouldBegin:shouldBeRequiredToFailByGestureRecognizer: | 但以相反的方式。
以下代码片段是我的 UIPanGestureRecognizer 委托实现:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
CGPoint velocity = [panGestureRecognizer velocityInView:panGestureRecognizer.view];
return fabs(velocity.y) > fabs(velocity.x);
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if (otherGestureRecognizer == panGestureOfSubView) {
return YES;
}
return NO;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |