[英]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.