【发布时间】:2013-01-29 16:56:49
【问题描述】:
我发现问题是 locationInView:在 UITapGestureRecognizer 上总是给我纵向的 (0,-67) 和横向的 (0,268) 的 CGPoint。 (如果我不将其转换为 UITapGestureRecognizer,我偶尔会在风景中得到 (0,180)。
iOS 5 Simulator 中不存在此问题。它经常发生在 iOS 6 模拟器中,几乎 90% 的时间发生在 iOS 6 设备中。
我现在的猜测是手势识别器在调用动作方法时不再有效..但这没有意义,因为这意味着我们总是需要在委托方法中调用 locationInView:..
详情:
我想要做什么: 识别 MKMapView 上的 Tap 手势,隐藏该点以协调并将其显示为注释
我做了什么: 在手势识别器的action方法中..
CLLocationCoordinate2D coordinate = [self.mapView convertPoint:[(UITapGestureRecognizer *)sender locationInView:self.mapView] toCoordinateFromView:self.mapView];
我确实进行了自省以确保发件人确实是 UITapGestureRecognizer..
我也尝试过为(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 返回YES,但这无济于事。
会发生什么: 坐标应与地图上点击的点相对应。
发生了什么: 坐标总是稍微偏左一点。
更新:
所以.. 我已经测试了<UIGestureRecognizerDelegate> 中的所有委托方法。在上述动作方法和– gestureRecognizer:shouldReceiveTouch: 中,手势识别器都为 locationInView: 提供了无效的位置 (0,-64)。 (如上所述,它是 0,-67,但在几分钟前我将 Xcode 更新到最新版本后变成了 0,-64,哈哈) 但是,在 – gestureRecognizerShouldBegin: 和 – gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 它给出正确的 CGPoint。
我的问题是..这是预期的行为吗?还是我搞砸了什么?否则,这意味着我需要在其中一种委托方法中触发我的操作,因为我确实需要手势识别器的正确位置。不过,这个选项听起来不太对。
【问题讨论】:
标签: ios