如何知道用户仍在 UIScrollView 中触摸屏幕?

Posted

技术标签:

【中文标题】如何知道用户仍在 UIScrollView 中触摸屏幕?【英文标题】:How to know that User is still touching the screen in UIScrollView? 【发布时间】:2012-11-12 09:15:18 【问题描述】:

我有一个滚动视图。典型的 tableView 单元。我在 viewDidScroll 上做了很多事情。

viewDidScroll 在 2 种情况下被调用。

    用户滚动 有时用户已停止滚动,但由于动量、弹跳等原因,滚动视图仍会滚动。

那么我如何知道用户是否仍在触摸滚动视图?

【问题讨论】:

【参考方案1】:

UIScrollView 有一个BOOL property named tracking,即YES,而滚动视图有一个触摸,否则NO。在我的测试中,一旦触摸结束,它就会设置为NO,即使视图正在减速(并且仍将scrollViewDidScroll: 发送给它的代表)。这似乎正是您所要求的。

在我的测试中,当触摸结束后视图正在减速时,dragging property 似乎不会可靠地变为NO

decelerating property 在我的测试中也不可靠。如果我在滚动视图减速时触摸它,decelerating 仍然是 YES,即使视图已停止滚动。

【讨论】:

【参考方案2】:

代理的scrollViewWillBeginDragging: 在用户开始拖动时被调用,scrollViewDidEndDragging:willDecelerate: & scrollViewWillEndDragging:withVelocity:targetContentOffset:(ios 5+ 没有启用分页) 在用户离开手指时被调用。

您可能还想查看scrollViewWillBeginDecelerating:scrollViewDidEndDecelerating:

参考:http://developer.apple.com/library/ios/#documentation/uikit/reference/uiscrollviewdelegate_protocol/Reference/UIScrollViewDelegate.html

【讨论】:

正确答案。但罗布的回答要好得多。 +1。继续尝试。祝你下次好运:)

以上是关于如何知道用户仍在 UIScrollView 中触摸屏幕?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 UIScrollView 触摸顶部 scrollView 是不是与另一个 View 的 CGPoint 相交

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

UIScrollView 的触摸事件

当用户触摸 uiscrollview 时隐藏表格

UiScrollview scrollviewDidScroll 检测用户触摸

带有检测触摸的图像视图的 UIScrollView