草庐IT

ios - UiScrollview scrollviewDidScroll 检测用户触摸

coder 2023-07-27 原文

我在我的应用程序中使用 UIScrollView,并使用 scrollviewDidScroll 方法移动不在 ScrollView 内的其他一些 View 。此行为应该仅在用户实际用手指移动 ScrollView 时发生,而不是在触摸事件结束时发生。

目前我正在使用 scrollview 的 dragging 属性来获得这种行为,但是它有一个问题:当用户在 scrollview 上滑动并在它停止减速之前再次触摸它时,dragging 属性不正确,尽管用户正在用手指拖动 ScrollView 。

最佳答案

UIScrollView 有一个 panGestureRecogniser 属性,它跟踪 ScrollView 中的平移手势。您可以在 scrollViewDidScroll 中跟踪平移手势的 state 以准确了解平移处于什么状态。

swift 4.0

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.isEqual(yourScrollView) {
        switch scrollView.panGestureRecognizer.state {
            case .began:
                // User began dragging
                print("began")
            case .changed:
                // User is currently dragging the scroll view
                print("changed")
            case .possible:
                // The scroll view scrolling but the user is no longer touching the scrollview (table is decelerating)
                print("possible")
            default:
                break
        }
    }
}

objective-C

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    if ([scrollView isEqual:yourScrollView]) {

        switch (scrollView.panGestureRecognizer.state) {

            case UIGestureRecognizerStateBegan:

                // User began dragging
                break;

            case UIGestureRecognizerStateChanged:

                // User is currently dragging the scroll view
                break;

            case UIGestureRecognizerStatePossible:

                // The scroll view scrolling but the user is no longer touching the scrollview (table is decelerating)
                break;

            default:
                break;
        }
    }
}

关于ios - UiScrollview scrollviewDidScroll 检测用户触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24584998/

有关ios - UiScrollview scrollviewDidScroll 检测用户触摸的更多相关文章

随机推荐