UIPanGestureRecognizer translationInView总是返回一个相对点

时间:2015-02-05 19:57:32

标签: ios cocoa-touch uipangesturerecognizer

我的窗口中有一个UIPanGestureRecognizer附加到地图视图(并且模拟识别手势,因此我可以在地图平移时接收事件)。但由于某些原因我无法弄清楚,[UIPanGestureRecognizer translationInView:]总是返回相对于平移原点的坐标。实际上,无论我传递给它的视图参数如何,它的行为都相同,即使是nil

我无法弄清楚为什么它没有告诉我相对于我传入的视图的坐标。

self.mapViewPan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
self.mapViewPan.delegate = self;
[self.mapView addGestureRecognizer:self.mapViewPan];

*

- (void)pan:(UIPanGestureRecognizer*)sender {
    CGPoint translatedPoint = [sender translationInView:self.view];
    NSLog(@"%f, %f", translatedPoint.x, translatedPoint.y);
}

2 个答案:

答案 0 :(得分:3)

没关系,我似乎误解了translationInView:实际代表的内容。它似乎与触摸的起源无关(这让我想知道它的参数实际上是什么影响)。

事实证明我真正想要的是locationInView:

CGPoint touchPoint = [sender locationInView:self.view];

这将返回视图坐标中触摸的位置。

答案 1 :(得分:0)

你有什么理由不使用MKMapViewDelegate方法吗? mapView:regionDidChangeAnimated:可让您在滚动时获取地图区域。