我有一个观点UIPanGestureRecognizer
垂直拖动视图。所以在识别器回调中,我只更新 y 坐标来移动它。该视图的超级视图有一个UIPanGestureRecognizer
这将水平拖动视图,仅更新 x 坐标。
问题是第一个UIPanGestureRecognizer
正在采取事件来垂直移动视图,所以我无法使用超级视图手势。
我努力了
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer;
两者都会起作用,但我不想要这样。我希望仅当运动明显水平时才能检测到水平方向。所以如果UIPanGestureRecognizer
有方向属性。
我怎样才能实现这种行为?我发现这些文档非常令人困惑,所以也许有人可以在这里更好地解释它。
只需对垂直平移手势识别器执行此操作,它对我有用:
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer {
CGPoint velocity = [panGestureRecognizer velocityInView:someView];
return fabs(velocity.y) > fabs(velocity.x);
}
对于斯威夫特来说:
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIPanGestureRecognizer) -> Bool {
let velocity = gestureRecognizer.velocity(in: someView)
return abs(velocity.y) > abs(velocity.x)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)