首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UITapGestureRecognizer为locationInView提供无效值:

UITapGestureRecognizer为locationInView提供无效值:
EN

Stack Overflow用户
提问于 2013-01-29 16:56:49
回答 1查看 1.1K关注 0票数 1

我已经找到了locationInView的问题:在UITapGestureRecognizer上总是给我(0,-67)的肖像和风景的CGPoint (0,268)。(如果我不把它塑造成UITapGestureRecognizer,我偶尔会看到(0,180)的风景。

此问题在iOS 5模拟器中不存在。这种情况经常发生在iOS 6模拟器中,几乎90%的时间发生在iOS 6设备中。

我现在猜到,手势识别器在调用action方法时不再有效。但这没有意义,因为这意味着我们总是需要在委托方法中调用locationInView:.

详细信息:

我想要做的事情:识别MKMapView上的一个Tap手势,隐藏它来协调并显示它作为一个注释

我所做的:在动作方法中的手势识别器。

代码语言:javascript
运行
复制
CLLocationCoordinate2D coordinate = [self.mapView convertPoint:[(UITapGestureRecognizer *)sender locationInView:self.mapView] toCoordinateFromView:self.mapView];

我确实进行了反省,以确保发送者确实是一个UITapGestureRecognizer。

我也尝试过将YES返回给(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer,但这并没有帮助。

应该发生什么:坐标应该对应于地图上点击的点。

发生了什么:坐标总是稍微偏左。

更新:

所以..。我已经用<UIGestureRecognizerDelegate>中的所有委托方法进行了测试。在上面的action方法和– gestureRecognizer:shouldReceiveTouch:中,手势识别器给出了locationInView:的无效位置(0,-64)。(如前所述,它是0,-67,但在几分钟前我将Xcode更新到最新版本lol之后,变成了0,-64 )。然而,在– gestureRecognizerShouldBegin:– gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:中,它给出了正确的CGPoint。

我的问题是。这就是你想要的行为吗?还是我搞砸了什么?否则,就意味着我需要在一个委托方法中启动我的操作,因为我确实需要手势识别器的正确位置。但是这个选项听起来不太正确..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-29 17:14:25

对不起,伙计们,我已经找到原因了。

我只是把locationInView:放在performBlock: of a NSManagedObjectContext中,这很明显,因为UIGestureRecognizer是UI的东西,iOS中的规则#1是"UI内容只属于主线程“。这立即解释了locationInView:的不一致行为,以及为什么它更有可能在早期阶段成功。

教训,再次:阅读“手势识别器”为UIGestureRecognizer"UI"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14588067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档