在 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];

}