如何从 UIScrollView 内的 UIButton 传递延迟滚动手势?

Posted

技术标签:

【中文标题】如何从 UIScrollView 内的 UIButton 传递延迟滚动手势?【英文标题】:How do I pass delayed scroll gestures from a UIButton inside of a UIScrollView? 【发布时间】:2012-07-30 21:00:43 【问题描述】:

我有一个包含多个 UIButton 的 UIScrollView。当用户输入一个触摸事件时,每个按钮都被连接起来采取行动,因此他们可以将手指放在按钮上,并且在它被抬起之前不会被选中。目前,如果我做出滑动手势来快速滚动 UIScrollView,那么即使手势直接发生在 UIButton 上,滚动视图也会按预期移动。但是,如果我在 UIButton 上按住手指的时间过长(大约 1 秒),UIScrollView 将不再识别手势并且在手指抬起之前无法滚动。

我想知道它们是否是一种始终让 UIScrollView 识别滚动手势的方法?请注意,如果我在没有 UIButton 的位置触摸 UiScrollView,这不是问题 - 然后它会按预期滚动。

【问题讨论】:

【参考方案1】:

让您的UIButton 回复UIControlEventTouchDown 可能值得一试(可能是空操作)。我不确定这是否可行,但从概念上讲,我认为它应该让UIButton 立即捕捉到触摸。

(同时确保您没有在滚动视图上启用delaysContentTouches。)

【讨论】:

其实我需要它来响应UIControlEventTouchUp。我不希望按钮立即响应,如果触摸输入更改为滚动事件,我希望取消按钮事件。 不,我的意思是,为UIControlEventTouchDown 放置一个空的IBAction 只是为了劫持触摸被发送到滚动视图,然后在UIControlEventTouchUp 中实现您希望按钮执行的任何操作。 【参考方案2】:

我在这里找到了答案:UIScrollview with UIButtons - how to recreate springboard?

基本上,我必须扩展 UIScrollView 并覆盖 touchesShouldCancelInContentView,让它始终返回 YES。

【讨论】:

以上是关于如何从 UIScrollView 内的 UIButton 传递延迟滚动手势?的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 pickerView 从 plist 检索文本以在 UIScrollView 内的 UITextView 中滚动

如何在 swift 中设置 UIScrollView 内的全宽图像

分页 UIScrollView 内的 UIScrollView

在 UIScrollView 内的 UIImageView 上启用 GestureRegnizer

UIScrollView 内的 CPTXYGraph

UIScrollView 内的 UIWebView 框架不会拉伸大小以适应所有内容