Позиция указателя 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
туда, где находится палец пользователя.
Ответы
Ответ 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) )