【问题标题】:UIScrollView touch handlingUIScrollView 触摸处理
【发布时间】:2011-05-11 21:18:17
【问题描述】:

我正在从 Apple UIScrollView 类参考文档中阅读有关 UIScrollView 的以下内容:

因为滚动视图没有滚动 吧,一定要知道摸一摸 表示打算滚动而不是 意图跟踪 内容。为了做出这个决定, 它暂时拦截了触地得分 事件通过启动一个计时器,之前 计时器触发,看看是否 触摸手指做出任何动作。如果 计时器触发没有显着 位置变化,滚动视图 向被触摸者发送跟踪事件 内容视图的子视图。如果 用户然后将他们的手指拖得很远 在计时器过去之前足够了, 滚动视图取消任何跟踪 子视图并执行滚动 本身。子类可以覆盖 touchesShouldBegin:withEvent:inContentView:, pagingEnabled 和 touchesShouldCancelInContentView: 方法(由 滚动视图)来影响滚动方式 视图处理滚动手势。

我不明白以“如果用户在计时器结束之前将手指拖得足够远......”开头的句子我认为计时器已经按照前一句触发了。它是在谈论这个中的另一个计时器吗?

【问题讨论】:

    标签: iphone objective-c uiscrollview


    【解决方案1】:

    这令人困惑。我相信有 2 种可能的行为取决于您的 scrollView 是否设置了 delaysContentTouches 属性(或者设置了 canCancelContentTouches 属性)

    如果设置了delaysContentTouches

    当用户点击滚动视图时,它会通过启动计时器来临时拦截触摸事件,并在计时器触发之前查看触摸手指是否有任何移动。如果计时器在位置没有显着变化的情况下触发,则滚动视图将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器结束之前将手指拖得足够远,则滚动视图开始滚动。

    如果计时器已触发:

    如果设置了canCancelContentTouches,则滚动视图取消并触摸传递给其子视图并开始滚动。否则,不滚动。

    如果在用户拖动手指之前计时器尚未到期,则会发生滚动。

    我想我是对的......(有人可能想仔细检查)

    HTH

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 2014-02-28
      • 1970-01-01
      相关资源
      最近更新 更多