Ios UITapGestureRecognitor为locationInView提供无效值:
我发现问题出在locationInView上:在UITapGestureRecognitor上,纵向和横向的CGPoint分别为(0,-67)和(0268)。(如果我不将其转换为UITapgestureRecognitor,我偶尔会在横向中获得(0180) 这个问题在iOS 5模拟器中并不存在。它经常发生在iOS 6模拟器中,几乎90%的时间发生在iOS 6设备中 我现在的猜测是,手势识别器在调用action方法时不再有效。但这没有意义,因为这意味着我们总是需要在委托方法中调用locationInView: 详情: 我想做什么: 识别MKMapView上的点击手势,转换该点以进行协调,并将其显示为注释 我所做的: 在手势识别器的动作方法中Ios UITapGestureRecognitor为locationInView提供无效值:,ios,Ios,我发现问题出在locationInView上:在UITapGestureRecognitor上,纵向和横向的CGPoint分别为(0,-67)和(0268)。(如果我不将其转换为UITapgestureRecognitor,我偶尔会在横向中获得(0180) 这个问题在iOS 5模拟器中并不存在。它经常发生在iOS 6模拟器中,几乎90%的时间发生在iOS 6设备中 我现在的猜测是,手势识别器在调用action方法时不再有效。但这没有意义,因为这意味着我们总是需要在委托方法中调用locationI
CLLocationCoordinate2D coordinate = [self.mapView convertPoint:[(UITapGestureRecognizer *)sender locationInView:self.mapView] toCoordinateFromView:self.mapView];
我确实进行了内省,以确保发件人确实是一个UITapgestureRecognitor
CLLocationCoordinate2D coordinate = [self.mapView convertPoint:[(UITapGestureRecognizer *)sender locationInView:self.mapView] toCoordinateFromView:self.mapView];
我还尝试为(BOOL)手势识别器返回YES
(UIGestureRecognitor*)手势识别器应与手势识别器同时识别:(UIGestureRecognitor*)其他手势识别器
,但这没有帮助
应该发生什么:
坐标应与地图上点击的点相对应
发生了什么:
坐标始终稍微向左偏远
更新:
因此..我已使用
中的所有代理方法进行了测试。上述动作方法和–手势识别器:shouldReceiveTouch:
手势识别器为locationInView:提供了无效的位置(0,-64)。(如上所述为0,-67,但几分钟前我将Xcode更新为最新版本后变为0,-64,lol)然而,在-手势识别器应开始:
和-手势识别器:应与手势识别器同时识别:
中,它给出了正确的CGPoint
我的问题是..这是预期的行为吗?还是我搞糟了什么?否则这意味着我需要在一个委托方法中启动我的操作,因为我确实需要手势识别器的正确位置。尽管此选项听起来不太正确..抱歉,伙计们,我已经找到了原因 我只是把
locationInView:
放在了NSManagedObjectContext
的performBlock:
中,这一点很清楚,因为UIgestureRecognitizer是一个UI东西,iOS中的规则1是“UI内容只属于主线程”这立即解释了locationInView:
的不一致行为,以及为什么它更可能在早期阶段成功
再次总结经验教训:将“手势识别器”读作UI手势识别器
“UI”