【问题标题】:Swipe only to the left using a UIScrollView使用 UIScrollView 仅向左滑动
【发布时间】:2021-02-19 10:26:40
【问题描述】:

我有一个设置了委托方法的滚动视图。

private let scrollView: UIScrollView = {

    let scrollView = UIScrollView(frame: .zero).usingAutoLayout()
    scrollView.isPagingEnabled = true
    scrollView.showsVerticalScrollIndicator = false
    scrollView.showsHorizontalScrollIndicator = false

    return scrollView
}()

我试图只向左滚动以模仿“删除单元格”,就像在电话簿中一样。我不希望用户能够向右滚动。我有这个,有点用:

func scrollViewDidScroll(_ scrollView: UIScrollView) {

     if scrollView.contentOffset.x < 0 {

        scrollView.contentOffset.x = 0
}

问题在于,如果我快速滑动,contentOffSet 会设置为正值,这会使 scrollView 向相反方向滚动。这通常发生在我完成滑动手势之后。这让我觉得它与反弹有关,但即使将其设置为false,它仍然会发生。

【问题讨论】:

    标签: ios swift uiscrollview uiscrollviewdelegate


    【解决方案1】:

    能够想出一个解决方案:

    extension SwipeableCollectionViewCell: UIScrollViewDelegate {
    
        func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    
            if scrollView.panGestureRecognizer.translation(in: scrollView.superview).x > 0 {
    
                self.scrollDirection = .rigth
    
            } else {
    
                self.scrollDirection = .left
            }
        }
    
        func scrollViewDidScroll(_ scrollView: UIScrollView) {
    
            if self.scrollDirection == .rigth {
    
                scrollView.contentOffset.x = 0
            }
        }
    }
    
    private enum ScrollDirection {
    
        case rigth
        case left
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 2014-11-23
      相关资源
      最近更新 更多