如何在不丢失触摸事件的情况下冻结 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 滚动的主要内容,如果未能解决你的问题,请参考以下文章
如何在不冻结 GUI 的情况下让 AudioQueue 播放?