Objective-C如何检测来自多个子视图的多点触控

时间:2011-08-09 03:25:20

标签: objective-c ios ipad multi-touch

目标-C

假设我的主视图名称有三个子视图A,B和C.

A是scrollView。 B和C都是图像视图。

我需要在主视图上检测多点触控。例如,如果您在屏幕上使用两根手指触摸,则会显示警告框。

如果两个手指触摸相同的子视图,则可以。

但如果一个手指在视图B处触摸而另一个触摸在视图C处,则会出现问题,因为主视图接收2次连续触摸而不是多点触控。

我想知道这个问题是否有解决方案?

感谢您的每一个答案。

2 个答案:

答案 0 :(得分:1)

你可以这样做 -

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(multiTap:)];
[tap setNumberOfTapsRequired:1];
[tap setNumberOfTouchesRequired:1];
[self.yourView addGestureRecognizer:tap];
[tap release];

您可以实现处理此事件的multiTap。但是,无论如何,你想要做的事情可能会让用户感到困惑。无论如何这是你的电话。技术上这是可能的......

答案 1 :(得分:0)

理论上,探索的一个可能的解决方案是首先添加一个透明的玻璃视图,作为主视图的子视图,因此它将是接收所有水龙头的视图A,B,C的兄弟。附加UITapGestureRecognizer并在所有子视图上设置UIGestureRecognizerDelegate,以便同时使用方法shouldRecognizeSimultaneouslyWithGestureRecognizer相互排除对视图D和A中手势的识别。

在实践中,imho最好的解决方案根本不是要面对这个问题,而不是试图识别可能落在不同子视图上的多指点击,而是去捏合&缩放识别(UIPinchGestureRecognizer)因为它不会与常规的UITapGestureRecognizer发生碰撞,你就不会遇到这个问题。