【问题标题】:Scroll View is not disabled in CollectionView?CollectionView 中没有禁用滚动视图?
【发布时间】:2017-08-02 05:40:43
【问题描述】:

我是 swift 新手,我正在尝试在 collectionView 中实现一项功能(启用滚动。默认情况下,我希望启用滚动并禁用 pangesturerecgonizer。但在识别出长按后,滚动将被禁用并启用平移手势。完成平移手势后,应禁用滚动并启用滚动。我有以下代码。

lazy var panGesture: UIPanGestureRecognizer = {
    let pan =  UIPanGestureRecognizer(target: self, action: #selector(self.handlePan(sender:)))
        pan.delegate = self
    return pan
}()

override func viewDidLoad() {
    super.viewDidLoad()

    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.backgroundColor = UIColor.cyan
    self.view.addSubview(collectionView)

    self.view.addConstraint(NSLayoutConstraint(item: collectionView, attribute: .height, relatedBy: .equal, toItem: self.view, attribute: .height, multiplier: 1.0, constant: 0.0))

    collectionView.translatesAutoresizingMaskIntoConstraints = false
    collectionView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    collectionView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    collectionView.addGestureRecognizer(panGesture)
    panGesture.isEnabled = false

    let tap = UILongPressGestureRecognizer(target: self, action: #selector(self.handleTap(sender:)))
    tap.delegate = self
    collectionView.addGestureRecognizer(tap)

}

func handlePan(sender: UIPanGestureRecognizer? = nil) {
    var locationOfBeganTap: CGPoint?

    if sender?.state == .possible { 
    }

    if sender?.state == .ended {
        startTime = NSDate.timeIntervalSinceReferenceDate
    }
}

func handleTap(sender: UIPanGestureRecognizer? = nil){            
    if sender?.state == .began {
        panGesture.isEnabled = true
        self.collectionView!.isScrollEnabled = false
    }

    if sender?.state == .ended {
    }
}

谢谢!

【问题讨论】:

    标签: ios swift scrollview collectionview


    【解决方案1】:

    我不明白,你是说当pan被触发时,滚动不能被禁用并且pan不再工作?

    尝试为滚动视图添加用户交互:

    collectionV.isScrollEnabled = false
    collectionV.isUserInteractionEnabled = true
    

    【讨论】:

    • collectionView.isUserInteractionEnabled 已经为真。也许我的编辑会更有意义。
    【解决方案2】:

    你可以申请,

    collectionView.isUserInteractionEnabled = true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 2014-12-24
      • 2020-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多