如何从 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