我正在编写一个 iPad 应用程序,该应用程序需要非常精确地计时手指移动,因此我热衷于获得最佳性能和准确性。我对此有两个问题:
为了截取屏幕上的手指位置,我必须使用 touchesMoved(),还是有较低级别的 API?
有谁知道 touchesMoved() 是否返回屏幕上的确切位置,或者 iPad 是否执行了一些插值?
谢谢!
我正在编写一个 iPad 应用程序,该应用程序需要非常精确地计时手指移动,因此我热衷于获得最佳性能和准确性。我对此有两个问题:
为了截取屏幕上的手指位置,我必须使用 touchesMoved(),还是有较低级别的 API?
有谁知道 touchesMoved() 是否返回屏幕上的确切位置,或者 iPad 是否执行了一些插值?
谢谢!
您有 3 种截取手指位置的方法: a) UIResponder Delegate 方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
b) UIGestureRecognizer 的方法
c) 你也可以覆盖- (void)sendEvent:(UIEvent *)event; 在 UIApplicationDelegate 或 UIWindow 中捕获 UIEvents - 但不推荐使用此方法。
所有这些方法都适用于包含 touch point的 UITouch 。该点由设备硬件计算,因此不会影响精度。
最后一点:推荐的最小触摸区域为 44x44。如果您触摸的区域会更小,那么用户会因为使用您的软件而感到不舒服。
触摸不是很精确,因为手指不是很精确(远低于鼠标光标),并且因为跟踪硬件不是很精确(因为它不需要,因为手指大小 - 它不起作用没有明显的接触区域)。
话虽如此,与许多其他电容式触摸设备相比,iDevices 的触摸屏非常出色。我只是不确定在实践中是否可以达到像素精度。
不过,很容易对此进行试验。