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

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

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

【问题讨论】:

    标签: ios xcode uiscrollview uibutton


    【解决方案1】:

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

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

    【讨论】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-01
      • 2014-09-29
      • 1970-01-01
      • 2016-09-07
      • 2011-04-13
      • 1970-01-01
      • 2013-05-31
      • 2011-04-08
      • 2014-01-22
      相关资源
      最近更新 更多