我有一个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。
答案 0 :(得分:-1)
您应该能够获取panGesture的值(移动的数量),然后将其传递给滚动tableView的函数,如下所示:
func scrollTableView(amount: CGFloat) {
let point: CGPoint = CGPoint(x: 0.0, y: amount)
tableView.setContentOffset(point, animated: true)
}
你需要测试动画是否应该是假的。