【问题标题】:touchesMoved behavior in iPhone and SimulatoriPhone 和模拟器中的 touchesMoved 行为
【发布时间】:2009-12-21 01:17:46
【问题描述】:

touchesMoved 函数在 iPhone 和模拟器中的行为不同。

函数touchesMoved的重复间隔(刷新率)比模拟器快很多。有没有办法处理差异?

【问题讨论】:

  • 当您说“比模拟器快得多”时,您的意思是“在模拟器上快得多”吗?模拟器上的许多事情要快得多,但这对您的程序无关紧要;如果您依赖特定的刷新率,那么您无论如何都不会工作(因为不能保证)。您遇到什么问题?
  • 情况是,设备确实比模拟器快。为了测试这一点,我只是尝试通过拖动来移动 UIImageView。我发现在 iPhone 中拖动速度更快。

标签: iphone ios-simulator touch touchesmoved


【解决方案1】:

人们经常发现这是一个问题,因为他们在 touchesMoved 处理程序中执行了一些密集的操作,并且当事件非常频繁地到达时,它会使界面看起来滞后。

一种相对简单的处理方法是:首先,在 touchesMoved 处理程序中,将触摸位置存储在一个变量中,该变量表示跟踪手指的位置。

立即从 touchesMoved 处理程序返回。创建一个 NSTimer 对象并将您的视图控制器设置为它的委托,并让它执行您的 touchesMoved 处理程序中曾经存在的任何重新绘制/视图移动行为。因此,无论 touchesMoved 事件之间的时间如何,您都会获得近乎恒定的移动。

如果你真的很高级,你可以使用自定义的 NSRunLoop 而不是使用计时器,但这比我在这里可以解释的要多 :) 总体思路是:不要在触摸事件处理程序中做所有事情。

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 2018-09-22
    • 1970-01-01
    • 2010-12-09
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多