在 ScrollView 中找到用户拖动手指的 X 位置
Find X position of where user is dragging their finger in ScrollView
我有一个滚动视图,我正在观察用户输入。我想知道他们的手指目前在 X 平面上的位置。这可以通过 ScrollView and/or 它的委托实现,还是我必须覆盖 touchesBegan
等?
CGPoint touchPoint = [scrollView.panGestureRecognizer locationInView:scrollView];
CGFloat x = touchPoint.x;
我假设您设置了滚动视图委托。如果你这样做了,那么你只需要从 UIScrollViewDelegate
协议中实现 scrollViewDidScroll:
方法...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint touchPoint = [scrollView.panGestureRecognizer locationInView:scrollView];
NSLog(@"Touch point: (%f, %f)", touchPoint.x, touchPoint.y);
}
这将在用户滚动时更新。
附加信息:请注意,如果您有类似 UIPageControl
的内容,则您的滚动视图在两者之间导航,您可能必须根据以下内容计算 x 位置页数(即,如果每页的宽度为 100 像素,则第 0 页将从点 0 开始,第 1 页从点 100 开始,等等)。
CGPoint point = [_scrollView locationOfTouch:touchIndex inView:_scrollView];
touchindex:第一次触摸为 0,1、2、3 依此类推
如果 inview:nil 则点将在 window 基础坐标系中
CGFloat x = point.x;
CGFloat y = point.y
我使用了 scrollView 的 panGesture,因为当你只有垂直滚动时,如果你想知道 x 平面的位置,它会更准确。
[self.scrollView.panGestureRecognizer addTarget:self action:@selector(handlePanForScrollView:)];
然后:
- (void)handlePanForScrollView:(UIPanGestureRecognizer *)gesture {
CGPoint positionInView = [gesture locationInView:self.scrollView];
}
我有一个滚动视图,我正在观察用户输入。我想知道他们的手指目前在 X 平面上的位置。这可以通过 ScrollView and/or 它的委托实现,还是我必须覆盖 touchesBegan
等?
CGPoint touchPoint = [scrollView.panGestureRecognizer locationInView:scrollView];
CGFloat x = touchPoint.x;
我假设您设置了滚动视图委托。如果你这样做了,那么你只需要从 UIScrollViewDelegate
协议中实现 scrollViewDidScroll:
方法...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint touchPoint = [scrollView.panGestureRecognizer locationInView:scrollView];
NSLog(@"Touch point: (%f, %f)", touchPoint.x, touchPoint.y);
}
这将在用户滚动时更新。
附加信息:请注意,如果您有类似 UIPageControl
的内容,则您的滚动视图在两者之间导航,您可能必须根据以下内容计算 x 位置页数(即,如果每页的宽度为 100 像素,则第 0 页将从点 0 开始,第 1 页从点 100 开始,等等)。
CGPoint point = [_scrollView locationOfTouch:touchIndex inView:_scrollView];
touchindex:第一次触摸为 0,1、2、3 依此类推
如果 inview:nil 则点将在 window 基础坐标系中
CGFloat x = point.x;
CGFloat y = point.y
我使用了 scrollView 的 panGesture,因为当你只有垂直滚动时,如果你想知道 x 平面的位置,它会更准确。
[self.scrollView.panGestureRecognizer addTarget:self action:@selector(handlePanForScrollView:)];
然后:
- (void)handlePanForScrollView:(UIPanGestureRecognizer *)gesture {
CGPoint positionInView = [gesture locationInView:self.scrollView];
}