gpt4 book ai didi

ios - UITapGestureRecognizer 为 locationInView : 提供无效值

转载 作者:行者123 更新时间:2023-11-29 11:03:47 29 4
gpt4 key购买 nike

我已经追踪到问题出在 UITapGestureRecognizer 上的 locationInView: 总是给我纵向的 (0,-67) 和横向的 (0,268) CGPoint。 (如果我不将其转换为 UITapGestureRecognizer,我偶尔会在横向上得到 (0,180)。

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

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

详细信息:

我正在尝试做的事情:识别 MKMapView 上的 Tap 手势,隐藏该点以进行坐标并将其显示为注释

我做了什么:在手势识别器的 Action 方法中..

CLLocationCoordinate2D coordinate = [self.mapView convertPoint:[(UITapGestureRecognizer *)sender locationInView:self.mapView] toCoordinateFromView:self.mapView];

我确实做了内省(introspection)以确保发送者确实是一个 UITapGestureRecognizer..

我也试过返回YES对于 (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer但这没有帮助。

应该发生什么:该坐标应与在 map 上点击的点相对应。

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

更新:

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

我的问题是..这是预期的行为吗?还是我搞砸了什么?否则这意味着我需要在其中一种委托(delegate)方法中触发我的操作,因为我确实需要手势识别器的正确位置。不过这个选项听起来不太正确..

最佳答案

抱歉打扰了大家,我已经找到原因了。

我只是将 locationInView: 留在 NSManagedObjectContextperformBlock: 中,这很清楚,因为 UIGestureRecognizer 是一个 UI 事物,并且iOS 中的第一条规则是“UI 内容只属于主线程”。这立即解释了 locationInView: 的不一致行为,以及为什么它更有可能在早期阶段成功..

再次吸取教训:将“手势识别器”读作 UIGestureRecognizer“用户界面”

关于ios - UITapGestureRecognizer 为 locationInView : 提供无效值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com