我有一个scrollView,它包含一个subView。 SubView添加了一个panGesture。
我想要什么:
只有在垂直进行平移时,我才需要使用pangest来处理子视图。如果平移是水平发生的,我希望scrollView响应平移而不是子视图。我怎样才能实现这个
注意:当横向平移时,我能够以编程方式找到它。
答案 0 :(得分:1)
由于您已经知道如何检测平移,因此您需要在superview中实现委托协议,在子视图中实现委托属性,并将您的超级视图指定为子视图的委托。
当检测到水平平移时,调用委托方法,当检测到垂直平移时,在子视图中实现你想要的内容。
答案 1 :(得分:1)
有几种方法可以做到这一点:
superview
即可。但是,这会在两个视图之间产生强大的耦合,并且可能不应该这样做。它会很脆弱,许多人会认为它是代码味道。UIGestureRecognizer
并创建自己的手势识别器,仅识别垂直移动。使用它而不是UIPanGestureRecognizer
。选项3是最好的,但可能是最多的工作。您需要阅读Apple关于子类化UIGestureRecognizer
:Apple Docs - UIGestureRecognizer的文档。
我还编写了自己的拖动手势识别器,FlxDragGestureRecognizer.m,FlxDragGestureRecognizer.h(类似于平移手势识别器),如果您愿意,可以使用它,或者查看很好地了解如何继承UIGestureRecognizer
。您可以使用此类来识别仅在某些方向上移动的触摸,否则它将失败(这将允许其他手势识别器识别器,如滚动视图)。它还有许多其他自定义和收集的信息,如速度。