UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
[self addGestureRecognizer:panRecognizer];
- (void)pan:(UIPanGestureRecognizer *)gesture {
NSLog(@"%f", [gesture translationInView:self].x);
}
上面的代码会记录当前平移的相对位置,但是如何获得我所在视图的绝对位置?
我只是想将UIImageView
滑动到用户手指所在的位置。
答案 0 :(得分:34)
translationInView
为您提供平移(x已更改多少),而不是视图中平移的位置(x的值)。如果您需要平移的位置,则必须使用方法locationInView
。
您可以按如下方式找到相对于视图的坐标:
- (void)pan:(UIPanGestureRecognizer *)gesture {
NSLog(@"%f", [gesture locationInView:self].x);
}
或者相对于superview:
- (void)pan:(UIPanGestureRecognizer *)gesture {
NSLog(@"%f", [gesture locationInView:self.superview].x);
}
或者相对于窗口:
- (void)pan:(UIPanGestureRecognizer *)gesture {
NSLog(@"%f", [gesture locationInView:self.window].x);
}
答案 1 :(得分:0)
我认为这样的简单方法是获取触摸的x和y并跟踪它,一旦它有2个点(比如X:230 Y:122),你将UIScroll视图的滚动设置为x和y。
我不确定我是如何得到这个答案的...如果没有帮助,请不要投票给我,我仍然是菜鸟D:
答案 2 :(得分:0)
<强>夫特强>
您的手势与CGPoint
的相对位置(self.view
):
print( gesture.locationInView(self.view) )