繁体   English   中英

如何将按钮中的panGesture传递给tableView? (快速4)

[英]How to pass a panGesture in a button to a tableView? (Swift 4)

我有一个segmentedControl位于tableView的标题内。 当它拾取一个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。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM