【问题标题】:How to pass a panGesture in a button to a tableView? (Swift 4)如何将按钮中的 panGesture 传递给 tableView? (斯威夫特 4)
【发布时间】:2018-04-27 18:09:29
【问题描述】:

我有一个位于 tableView 标题内的 segmentedControl。当它拿起一个 panGesture 时,我希望它滚动封闭的 tableView,就好像我在桌子上的其他地方向上或向下滑动一样。

我添加了一个 panGesture:

let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.handlePanGesture(_:)))
segmentedControl.addGestureRecognizer(panGestureRecognizer)

唯一接近做我想做的事是以下。但它的行为与我正常滑动 tableView 的行为不同。 panGesture 完成后,tableView 不会移回原始位置。没有反弹。

@objc func handlePanGesture(_ panGesture: UIPanGestureRecognizer) {
    let translation = panGesture.translation(in: segmentedVotingControl)
    panGesture.setTranslation(CGPoint.zero, in: segmentedVotingControl)
        tableView.contentOffset = CGPoint(x: tableView.contentOffset.x, y: tableView.contentOffset.y - translation.y)
}

我也尝试过类似的方法,但它只是锁住了桌子。它不滚动:

segmentedVotingControl.addGestureRecognizer(tableView.panGestureRecognizer)

segmentedControl 上的常规“点击”手势是这样处理的:

@objc func segmentedVotingControlAction(sender: UISegmentedControl) {
     // actions to perform on tap
}
segmentedControl.addTarget(self, action: #selector(segmentedVotingControlAction(sender:)), for: .valueChanged)

有什么想法吗?我在正确的轨道上吗?看来我应该能够以某种方式将 panGesture 传递给 tableView。

【问题讨论】:

    标签: swift uitableview uigesturerecognizer uipangesturerecognizer


    【解决方案1】:

    您应该能够获取 panGesture 的值(移动的数量),然后将其传递给滚动 tableView 的函数,如下所示:

    func scrollTableView(amount: CGFloat) {
        let point: CGPoint = CGPoint(x: 0.0, y: amount)
        tableView.setContentOffset(point, animated: true)
    }
    

    您需要测试动画是否应该为假。

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2017-03-24
      • 1970-01-01
      相关资源
      最近更新 更多