UITapGestureRecognizer每个值都相同

时间:2013-07-02 11:24:22

标签: cocoa-touch uitapgesturerecognizer

我是这个的新手,并重塑了一个应用程序。我正在尝试使用UITapGestureRecognizer。它适用于初始项目文件,但不适用于新文件。唯一的区别是旧的使用导航控制器,但我的不是。

在新的自我距离中:无论您在屏幕上按哪个位置,位置到:中心都会停留在640.

有人可以帮忙吗?我不知道它为什么不起作用。

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
    CGPoint location = [recognizer locationInView:[recognizer.view superview]];
    CGPoint centre   = CGPointMake(512,768 / 2);

    NSInteger msg = [self distance:location to:centre];
    NSLog(@"location to centre: %d", msg);

    if ([self distance:location to:centre] < 330)

2 个答案:

答案 0 :(得分:0)

请参阅下面的链接,您可能会得到答案。这是手势识别的一个例子。

http://www.techotopia.com/index.php/An_iPhone_iOS_6_Gesture_Recognition_Tutorial

答案 1 :(得分:0)

对我来说可疑的部分是[recognizer.view superview]

当手势识别器添加到不在容器控制器(例如导航控制器)内的UIViewController中的self.view时,该视图没有超视图。如果您将superview消息发送到self.view而没有容器视图控制器,它将返回nil。

所以你的消息看起来基本上就像这样

CGPoint location = [recognizer locationInView:nil]; 

这将返回窗口中的位置,这也是一个有效的CGPoint,告诉您是否点击了屏幕。
由于这不起作用,我想在[self distance:location to:centre]中你做的事情只适用于相对于视图的坐标。也许它与旋转有关,因为旋转设备时窗口的坐标不会旋转。 在不知道你的代码的情况下,我不确定问题是什么,但它可能并不重要。

只需将[recognizer.view superview]替换为recognizer.view