如何在不丢失触摸事件的情况下冻结 UIScrollView 滚动

Posted

技术标签:

【中文标题】如何在不丢失触摸事件的情况下冻结 UIScrollView 滚动【英文标题】:How to freeze UIScrollView scrolling without losing the touch event 【发布时间】:2016-04-20 23:09:38 【问题描述】:

有没有办法在不放弃正在进行的触摸事件的情况下停止(和启动)UIScrollView 的滚动中触?也就是说,仍然会触发scrollViewDidScroll,但不会将滚动视图与用户的手指一起设置动画。

scrollEnabled 设置为false 会导致触摸丢失。

This question 本质上是我想要做的,但答案(似乎)不起作用。

【问题讨论】:

另一种选择是在您的真实滚动视图上放置一个不可见的滚动视图。在隐形滚动视图的scrollViewDidScroll:,如果你想真正滚动,就做realScrollView.contentOffset = fakeScrollView.contentOffset; 【参考方案1】:

是的,您需要在视图上使用 UIGestureRecognizer。当你想拦截滚动时,你可以将 cancelsTouchesInView 设置为 YES,否则设置为 NO。这可能对您有帮助:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/#//apple_ref/occ/instp/UIGestureRecognizer/cancelsTouchesInView。具体来说,您需要使用 SwipeGestureRecognizer:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UISwipeGestureRecognizer_Class/index.html#//apple_ref/occ/cl/UISwipeGestureRecognizer

【讨论】:

以上是关于如何在不丢失触摸事件的情况下冻结 UIScrollView 滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何在不冻结线程的情况下延迟答案? [复制]

如何在不冻结整个线程的情况下让函数等待

PyQt:如何在不冻结 GUI 的情况下更新进度?

如何在不冻结 GUI 的情况下让 AudioQueue 播放?

如何在不冻结 GUI 的情况下使用视频帧不断更新 contentcontrol?

如何在不冻结 UI 的情况下使用 QProcess 循环的输出更新 UI?