在 UIScrollView 中模拟拖动结束

Posted

技术标签:

【中文标题】在 UIScrollView 中模拟拖动结束【英文标题】:Simulate end of drag in UIScrollView 【发布时间】:2012-06-11 03:27:46 【问题描述】:

当用户水平滚动超出我的 scrollView 的 contentSize 一定距离时,我想“接管”并运行一些动画。问题是即使我在发生这种情况后立即关闭用户交互,“拖动”操作仍在进行中。只有当用户松开触摸时,交互才会被禁用。

有没有办法以编程方式模拟拖动结束时的修饰?最终结果应该是,当我的触发器触发时,用户立即无法再操作视图。

【问题讨论】:

【参考方案1】:

您可以暂时将滚动视图的scrollEnabled 属性设置为NO。 (与userInteractionEnabled 属性不同,切换scrollEnabled 会立即生效。)您可以在动画完成后再次打开它。

来自 Apple 的文档:

启用滚动

一个布尔值,用于确定是否启用滚动。

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled

讨论

如果此属性的值为 YES,则启用滚动,如果为 NO,则禁用滚动。默认为 YES。

当禁用滚动时,滚动视图不接受触摸事件;它将它们转发到响应者链上。

【讨论】:

【参考方案2】:

我认为您应该使用手势识别器来检测用户的触摸。这应该可以解决您的问题。但是为了更清楚,您能否将代码片段发布在您尝试检测触摸的地方?

【讨论】:

我没有做任何特别的事情——滚动视图正在处理触摸事件。我只需要一种方法让它停止响应。 不要使用scrollview的委托方法。使用scrollView.delegate=nil。这应该对你有帮助。

以上是关于在 UIScrollView 中模拟拖动结束的主要内容,如果未能解决你的问题,请参考以下文章

ios模拟器:模拟滑动和拖动

在 UIScrollView 中拖动 UIButtons?

在 UIScrollView 中拖动一个 UIView

在 UIScrollview 中禁用对角线拖动

UIScrollView 在拖动和点击之间做出决定

在无限 UIScrollView 中跨页面拖动视图