我是这个的新手,并重塑了一个应用程序。我正在尝试使用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)
答案 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
。