UITapGestureRecognizer 每个值都一样
Posted
技术标签:
【中文标题】UITapGestureRecognizer 每个值都一样【英文标题】:UITapGestureRecognizer every value the same 【发布时间】:2013-07-02 11:24:22 【问题描述】:我是这方面的新手,正在重新制作应用程序。我正在尝试使用 UITapGestureRecognizer。它适用于初始项目文件,但不适用于新项目文件。唯一的区别是旧的使用导航控制器,但我的没有。
在新版本中,无论您在屏幕上按什么位置,self distance:location to:centre 都停留在 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)
【问题讨论】:
[recognizer.view superview]
在我看来很可疑。这是什么景色?尝试将其替换为recognizer.view
解决了!非常感谢!超级视图是否与其他版本的导航控制器有关?
【参考方案1】:
我觉得可疑的部分是[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
。
【讨论】:
【参考方案2】:参考下面的链接,你可能会得到你的答案。手势识别就是一个例子。
http://www.techotopia.com/index.php/An_iPhone_ios_6_Gesture_Recognition_Tutorial
【讨论】:
以上是关于UITapGestureRecognizer 每个值都一样的主要内容,如果未能解决你的问题,请参考以下文章
从 UITapGestureRecognizer 获取 UITableViewCell
旋转后 UITapGestureRecognizer 不会触发
如何将 UITapGestureRecognizer 添加到 UICollectionViewCell 中的图像
如何在目标 c 中具有某些标签的特定标签上应用 UITapGestureRecognizer
如何将不同的 UITapGestureRecognizer 添加到单个 UILabel 的许多部分?
如何为 UIViewController.view 中也具有 UITapGestureRecognizer 的 UIView 挑选和操作 UITapGestureRecognizer?