在iPhone SDK中检测手指滑过的视图

3

我的问题涉及创建一个控件,类似于文本视图控件中的苹果放大镜,您可以触摸一秒钟左右弹出放大镜,然后拖动手指选择所需位置。

我已经创建了所有检测长时间静止触摸所需的方法。现在我需要检测我手指滑过的UIView。我不太确定如何使这个功能实现,有没有人能指点我一下?

2个回答

2
任何需要报告被触摸的UIView都可以使用UIResponder继承方法来检测触摸。
 touchesBegan:withEvent:
 touchesMoved:withEvent:
 touchesEnded:withEvent:
 touchesCancelled:withEvent:

如果您想要报告触摸的UIViews可以继承,并在子类中定义一个委托方法,在上述方法内部调用该方法。通过将委托设置为某个中央报告类,您可以识别所有接收到触摸和视图的触摸。

不要忘记传递触摸事件,例如:

[[self superview] touchesBegan:touches withEvent:event];

如果您希望触摸事件正常工作。


啊,很酷,我现在会去查看。看起来是正确的方法。 - johnw188
实际上,您可以定义一个单例类来处理所有触摸报告,而不是使用子类和委托方法 - 类似于[[TouchCatcher sharedSingleton] objectReceivedTouch:self] ,然后仅从上面显示的touches类中调用它。 - Adam Eberbach

0
在处理触摸移动的方法中,您可以向包含各种子视图的父视图发送命中测试。命中测试将返回视图中当前点的最深视图。代码可能类似于以下内容。
//Just detected that the finger is stationary
MyView *touchedView = [containerView hitTest:touchPoint withEvent:event];
[touchedView performSomeAction];

你应该进行一些类检查,以确保视图实际上是可以响应触摸的视图。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接