簡體   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