gpt4 book ai didi

ios - 在某些情况下使 superview 响应 subViews Pan Gesture

转载 作者:行者123 更新时间:2023-11-28 22:13:13 25 4
gpt4 key购买 nike

我有一个 ScrollView ,它包含一个 subview 。 SubView 添加了一个 panGesture。

我想要的:

只有在垂直平移时,我才需要 pangesture 才能在 subview 上工作。如果平移发生水平,我希望 scrollView 响应平移而不是 subview 。我怎样才能做到这一点

注意:当平移发生水平时,我能够以编程方式找到。

最佳答案

有几种方法可以做到这一点:

  1. 根据您的 subview 的功能,您可以将其替换为 ScrollView 并将其锁定为仅垂直滚动。 (而 super 应该只水平滚动)。
  2. 如果平移手势是水平移动的,您可以尝试将触摸信息从 subview 提供给它的父 View 。您可以使用委托(delegate)模式来执行此操作,或者,如果您知道自己的 super View 是什么,只需访问 subview 中的 superview 即可。但是,这会在两个 View 之间产生强耦合,可能不应该这样做。它会很脆弱,许多人会认为它有代码味道。
  3. (最佳选择)- 子类化 UIGestureRecognizer 并创建您自己的仅识别垂直移动的手势识别器。使用它代替 UIPanGestureRecognizer

选项 3 是最好的,但可能也是最有效的。您需要阅读 Apple 关于子类化 UIGestureRecognizer 的文档:Apple Docs - UIGestureRecognizer .

我还编写了自己的拖动手势识别器,FlxDragGestureRecognizer.m , FlxDragGestureRecognizer.h (类似于平移手势识别器),如果您愿意,可以使用它,或者查看以了解如何子类化 UIGestureRecognizer。您可以使用此类来识别仅在特定方向移动的触摸,否则它将失败(这将允许其他手势识别器识别,如 ScrollView )。它还收集了许多其他定制和信息,例如速度。

关于ios - 在某些情况下使 superview 响应 subViews Pan Gesture,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22379288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com