UIPanGestureRecognizer translationInView всегда возвращает относительную точку

У меня есть 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 ответа

Решение

Неважно, я, кажется, неправильно понял, что translationInView: на самом деле представляет. Похоже, что он относительно происхождения касания независимо (что заставляет меня задуматься, на что действительно влияет его параметр).

Оказывается, я действительно хочу locationInView::

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

Это возвращает местоположение касания в координатах представления.

Есть ли причина, по которой вы не используете для этого методы MKMapViewDelegate? mapView: regionDidChangeAnimated: должен позволить вам получить регион карты при прокрутке.

Другие вопросы по тегам