Iphone 接触开始后是否可以立即拉取接触点:被呼叫?

Iphone 接触开始后是否可以立即拉取接触点:被呼叫?,iphone,cocoa-touch,performance,uikit,Iphone,Cocoa Touch,Performance,Uikit,很可能你知道iPhone操作系统会在触摸开始:发生后人为地延迟约0.25秒。这是为了检查用户是否打算移动。如果在此期间三角洲移动足够明显,则touchesMoved:序列开始 但是,当你想在应用程序中实现触觉触摸行为时,你可能不希望有任何延迟。它看起来真难看!你开始移动某物,0.3秒内什么也没发生。然后,砰的一声,整个事情开始大翻滚。每次新的触摸序列开始移动时都会发生这种情况。这真是糟透了。当然,在某些情况下是需要的,因为您可能想确定用户是否真的打算移动。但对于定制的滑块或其他通过跟踪触摸运动工

很可能你知道iPhone操作系统会在触摸开始:发生后人为地延迟约0.25秒。这是为了检查用户是否打算移动。如果在此期间三角洲移动足够明显,则touchesMoved:序列开始

但是,当你想在应用程序中实现触觉触摸行为时,你可能不希望有任何延迟。它看起来真难看!你开始移动某物,0.3秒内什么也没发生。然后,砰的一声,整个事情开始大翻滚。每次新的触摸序列开始移动时都会发生这种情况。这真是糟透了。当然,在某些情况下是需要的,因为您可能想确定用户是否真的打算移动。但对于定制的滑块或其他通过跟踪触摸运动工作的触觉控制,情况并非如此

所以,在我发现iPhone操作系统故意这样做之后,我想知道如何克服这个问题。我无法预测移动,因为用户可能会向左或向右移动。我不知道这在Touches中是怎么回事。0.3秒足以让应用程序看起来没有响应

然而,似乎还有希望:Convertbot对此绝对没有问题。车轮在接触和移动时会立即旋转。没有延迟,没有延迟。我在他们的博客上问他们是怎么做的,但还没有回应

我希望有一种方法可以从系统中手动拉出触摸坐标。当touchesMoved:开始时,我会以60hz的频率开始一段时间间隔,直到touchesMoved:开始动作


所以这个星球上最大的问题是:“这怎么可能呢”

如果你的回复者是从UIScroll的角度来看的,确保您将scrollView的delaysContentTouches设置设置设置为NO。这将适用于UIResponder的TouchsBegingBegingWithTouch:method和UIControl的BegingWithTouch:method。

如果您的UIView子类是UITableView的子视图或其后代之一,如UITableView,在滚动视图或表格视图中,您必须
delayscontentoches
设置为NO。这样,它会立即将第一次触摸发送到您的
触摸开始:


但是,我认为ConvertBot根本不使用UIScrollView:它可能是一个自定义UIView,实现旋转部件本身。如果您的UI不需要滚动,那么只需将UIView子类放在内容视图中,您就不必设置
delaysContentTouches
,因为没有滚动视图来拦截触摸事件。

我想从中获得好处。但似乎我做不到,“砰!整个事情开始以一个大的翻转移动!”我也在寻找解决方案。我想我们都在某个时候被这个问题咬过。不久前我问了一个问题,但没有意识到是TouchsMoved事件被延迟导致了我动画中的抖动(我认为这是实际的渲染代码)。真正让我恼火的是,UIScrollView立即获得移动事件——它们非常平滑。延迟是由UIScrollView(以及UITableView)中的手势识别器添加的。UIView本身不会延迟任何触摸。它会延迟,而且很容易证明它会延迟。您编写了一个UIView子类,它在touchesBegind和touchesMoved上执行NSLog,并查看日志行上的时间戳。触摸开始和第一次触摸移动之间大约有200毫秒,但后续触摸移动事件之间通常只有20毫秒。