我有一个UITableView
,我想自然地滚动它。然而,我也有自己的手势识别器,可以同时识别(通过从YES
返回gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
)。
在我的手势处理程序计算出某个点之后,我想暂时停止表视图处理其自身底层手势的手势变化。这是因为此时我正在调整表视图的大小,并且我不希望它在发生这种情况时滚动(但仍然滚动到调整大小开始生效时的位置)。
我已经尝试在gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
中录制其他手势识别器,这似乎识别出正确的手势识别器,因为它显示为UIScrollViewPanGestureRecognizer
。但是,我对自己的处理程序中的识别器所做的任何事情都没有任何影响。
有人会认为设置otherRecognizer.enabled = NO
应该可以解决问题,但它没有任何效果。
也许桌面视图在我之前接收到它的手势事件,这样在那个时候禁用它就没有效果,但即使这样你也会认为它会在下一个更改事件中被禁用,但那不是案件要么。
我很难过。如何在不取消手势的情况下暂时阻止表格视图接收/处理手势?
更新
当我记录otherRecognizer
时,它显示为UIScrollViewPanGestureRecognizer
类型的对象,但其状态为Failed
。我还注意到实际上有很多调用gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
(甚至是类型UIScrollViewPanGestureRecognizer
的多个调用),所以也许我只是记录和禁用错误的调用...但我怎么知道哪个是我想要的那个?
更新2:
如果我在我自己的手势处理程序中的适当时刻设置tableView.panGestureRecognizer.enabled = NO
,它会让我在那里的一半 - 一旦我开始调整它,桌子就不再滚动了。但是,将其重新设置为启用状态不会重新激活手势,并且在新手势开始之前它不再处理任何进一步的滚动。
更新3:
我最终解决了#34;这通过在手势期间手动调整滚动视图的内容偏移量来实现。它似乎工作正常,但我仍然对真正的答案感到好奇。
答案 0 :(得分:1)
UITableView是一个UIScrollView。 UIScrollView具有panGestureRecognizer
属性。这是手势识别器响应用户在桌面视图上移动手指。
但是,这与您在调整表格视图大小时更改滚动位置无关。用户没有做任何事 - 你是。因此,没有任何手势也无法识别。如果要控制滚动视图的作用,则需要直接控制 。您可以使用UITableView方法,UIScrollView方法和UIScrollView委托。
如果没有更清晰的问题陈述,很难提出进一步的建议,但在我看来,问你的问题问的答案是你正在咆哮错误的树。但也许不是;也许你 打手势来调整表视图的大小并且你没有在问题中明确这一点?在这种情况下,请尝试禁用panGestureRecognizer
。或者,更好的是,暂时关闭表格视图的所有用户交互,并在其他位置检测此手势。