我试图覆盖scrollview的子类的 touchesShouldCancel 方法。
这是我的子类代码:
class MyScrollView: UIScrollView {
override func touchesShouldCancel(in view: UIView) -> Bool {
print("Works")
return false
}
}
我已经制作了这个类的滚动视图,它滚动它只是没有打印"工作"。我想为此添加一些功能,但它永远不会被调用。根据苹果文档:
'滚动视图在开始向内容视图发送跟踪消息后调用此方法。'
这让我相信每当我滚动时都应该调用该方法,但我无法弄清楚它为什么不滚动。如果有人有任何想法,欢呼。
答案 0 :(得分:1)
来自docs:
因为滚动视图没有滚动条,所以它必须知道触摸是否表示要滚动的意图与跟踪内容中的子视图的意图。为了做出这种确定,它通过启动计时器暂时拦截触碰事件,并且在计时器触发之前,查看触摸手指是否进行任何移动。如果计时器在没有显着位置变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器过去之前将手指拖得足够远,则滚动视图会取消子视图中的任何跟踪并执行滚动操作。子类可以覆盖touchesShouldBegin(_:with:in :),isPagingEnabled和touchesShouldCancel(in :)方法(由滚动视图调用),以影响滚动视图处理滚动手势的方式。
做这个实验。
touchesShouldCancel
然后开火。