如何将按钮中的 panGesture 传递给 tableView? (斯威夫特 4)
Posted
技术标签:
【中文标题】如何将按钮中的 panGesture 传递给 tableView? (斯威夫特 4)【英文标题】:How to pass a panGesture in a button to a tableView? (Swift 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。
【问题讨论】:
【参考方案1】:您应该能够获取 panGesture 的值(移动的数量),然后将其传递给滚动 tableView 的函数,如下所示:
func scrollTableView(amount: CGFloat)
let point: CGPoint = CGPoint(x: 0.0, y: amount)
tableView.setContentOffset(point, animated: true)
您需要测试动画是否应该为假。
【讨论】:
以上是关于如何将按钮中的 panGesture 传递给 tableView? (斯威夫特 4)的主要内容,如果未能解决你的问题,请参考以下文章
单击按钮后如何将输入值(TKinter)传递给其他类中的函数并使用传递的值运行函数[重复]
如何将模型动作传递给 Tkinter MVC 中的查看按钮?
如何将点击的卡片按钮 id 传递给 vue.js 中的后端 URL 路径?
如何通过单击 TableCell 中的按钮将我的 TableCell 中的标签值传递给 TableViewController? [关闭]