如何在VC中获得向上/向下的滚动/滑动方向?
我想在我的VC中添加一个UIScrollView或其他东西,它可以查看用户是向上还是向下滑动/滚动,然后隐藏/显示UIView
,这取决于它是向上/向下的手势。
发布于 2015-08-06 22:01:38
如果您使用UIScrollView
,那么您可以从scrollViewDidScroll:
函数中获益。您需要按如下方式保存它的最后一个位置( contentOffset
)和更新它:
// variable to save the last position visited, default to zero
private var lastContentOffset: CGFloat = 0
func scrollViewDidScroll(scrollView: UIScrollView!) {
if (self.lastContentOffset > scrollView.contentOffset.y) {
// move up
}
else if (self.lastContentOffset < scrollView.contentOffset.y) {
// move down
}
// update the new position acquired
self.lastContentOffset = scrollView.contentOffset.y
}
当然,还有其他方法可以做到这一点。
我希望这对你有帮助。
发布于 2015-12-28 01:05:16
我使用了维克多的答案,但略有改进。当滚动经过滚动的结尾或开头,然后获得回弹效果时。我已经通过计算scrollView.contentSize.height - scrollView.frame.height
添加了约束,然后将scrollView.contentOffset.y
范围限制为大于0或小于scrollView.contentSize.height - scrollView.frame.height
,在反弹时不做任何更改。
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if lastContentOffset > scrollView.contentOffset.y && lastContentOffset < scrollView.contentSize.height - scrollView.frame.height {
// move up
} else if lastContentOffset < scrollView.contentOffset.y && scrollView.contentOffset.y > 0 {
// move down
}
// update the new position acquired
lastContentOffset = scrollView.contentOffset.y
}
发布于 2015-08-06 21:43:50
带UISwipeGestureRecognizer的Swift 2-4
另一个选项是使用将识别向所请求方向滑动的UISwipeGestureRecognizer
(这将适用于所有视图,而不仅仅是UIScrollView
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let upGs = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.handleSwipes(sender:)))
let downGs = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.handleSwipes(sender:)))
upGs.direction = .up
downGs.direction = .down
self.view.addGestureRecognizer(upGs)
self.view.addGestureRecognizer(downGs)
}
@objc func handleSwipes(sender:UISwipeGestureRecognizer) {
if (sender.direction == .up) {
print("Up")
}
if (sender.direction == .down) {
print("Down")
}
}
}
https://stackoverflow.com/questions/31857333
复制相似问题