Позиция указателя iOS UIPanGestureRecognizer - программирование
Подтвердить что ты не робот

Позиция указателя iOS UIPanGestureRecognizer

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self addGestureRecognizer:panRecognizer];

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture translationInView:self].x);
}

Вышеприведенный код будет записывать относительное положение моего текущего панорамирования, но как я могу получить абсолютную позицию для представления, в котором я нахожусь?

Я просто хочу скользить UIImageView туда, где находится палец пользователя.

4b9b3361

Ответ 1

translationInView дает вам перевод панорамы (сколько х изменилось), а не положение панорамирования в представлении (значение x). Если вам нужна позиция панорамирования, вы должны использовать метод locationInView.

Вы можете найти координаты относительно представления следующим образом:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self].x);
}

Или относительно супервизора:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self.superview].x);
}

Или относительно окна:

- (void)pan:(UIPanGestureRecognizer *)gesture {
    NSLog(@"%f", [gesture locationInView:self.window].x);
}

Ответ 2

Я думаю, что простой способ сделать что-то вроде того, чтобы получить x и y касания и отслеживать его, как только он имеет 2 точки (например, X: 230 Y: 122), вы устанавливаете прокрутку вида UIScroll на x и y.

Я не уверен точно, как я добрался до этого ответа... Если это не поможет, не прогоняйте меня, я все равно noob D:

Ответ 3

Swift

Относительное расположение (CGPoint) вашего жеста до self.view:

print( gesture.locationInView(self.view) )