滚动视图在触摸并按住然后滑动时不滚动

Posted

技术标签:

【中文标题】滚动视图在触摸并按住然后滑动时不滚动【英文标题】:Scroll View doesn't scroll when touching and holding then swiping 【发布时间】:2014-01-28 16:47:39 【问题描述】:

我有 UIScrollView 和里面的其他 UIView 元素。我的其他 UIView 元素大多是分段控件。如果我单击 UISegmentedControl 并按住一秒钟然后尝试滚动,则不会发生滚动。只有当我的手指触摸并立即滑动时,我才能滚动。我检查了其他 ios 应用程序,例如邮件。行为是您触摸并按住邮件,然后它被突出显示,但是一旦手指移开,滚动就会发生并且突出显示被撤消。如何实现此行为?

【问题讨论】:

如果你在滚动视图上添加了分段控制,你可以在控制器的视图上添加它。它应该可以工作。 【参考方案1】:

问题是 UIScrollView 的属性。属性 canCancelContentTouches 设置为 NO。因此,触摸事件由滚动视图的子视图处理,滑动不会导致滚动。

【讨论】:

【参考方案2】:

您可以按照以下步骤之一进行操作:

    如果您在 UIScrollView 上使用 UISegmentedControl,请在控制器视图上添加 UISegmentedControl。

    如果你想在你的滚动视图上使用 UISegmentedControl,那么你必须通过创建 UIScrollView 的子类来创建自定义滚动视图,并使用图像视图而不是 UISegmentedControl 添加可以充当段的标签。这是因为您的 UISegmentControl 本身就是一个触摸处理程序,它会破坏 UIResponder 链。因此,在触摸事件期间滚动可能会遇到问题。

请让我知道这些是否有效。谢谢:)

【讨论】:

我忘了说我已经有一个控制器,我将分段控件添加到控制器的视图中。

以上是关于滚动视图在触摸并按住然后滑动时不滚动的主要内容,如果未能解决你的问题,请参考以下文章

在单元格上交互时集合视图不滚动

IOS UIScrollView - 同时滚动和点击元素

(垂直)滚动视图包含另一个(水平)滚动视图 - Kivy

如何在一个滚动视图中有多个滚动视图

阻止UIScrollView中的UISlider触发滚动

防止 UIScrollView 中的 UISlider 触发滚动