gpt4 book ai didi

ios - 无需触摸即可手动启动 UIPanGestureRecognizer

转载 作者:可可西里 更新时间:2023-11-01 01:56:50 25 4
gpt4 key购买 nike

我有一个不覆盖整个屏幕的表格 View (它有点像屏幕底部的抽屉)。当用户向下滚动到内容的末尾时,我想停止滚动,然后添加一个平移手势识别器。我这样做是这样的:

// MARK: UIScrollViewDelegate Methods

extension TutorProfileVC: UIScrollViewDelegate {

func scrollViewDidScroll(_ scrollView: UIScrollView) {
// Limit top vert bounce
guard mode == .drawer else { return }
if scrollView.contentOffset.y < -80.0 {
scrollView.contentOffset = CGPoint(x: 0, y: -80.0)
tableView.addGestureRecognizer(tablePanGR)
}
}

}

手势已添加,但在用户再次触摸屏幕之前不会注册。他们的手指已经放在桌面上了。是否可以在他们无需再次触摸屏幕的情况下启动手势?

最佳答案

我认为您对 this question 也有同样的问题.如果您想查看代码示例,请查看它。

要解决这个问题,您应该从一开始就添加手势,但只在用户滚动到底部时才处理手势 Action 。所以你不需要再次触摸屏幕,因为当你开始滚动时手势就开始了。处理手势的方法如下所示

@objc func handlePanGestureRecognizer(_ gestureRecognizer: UIPanGestureRecognizer) {
switch gestureRecognizer.state {
case .began:
// Do nothing
break
case .changed:
let translation = gestureRecognizer.translation(in: gestureRecognizer.view!.superview!)
let velocity = gestureRecognizer.velocity(in: gestureRecognizer.view!.superview)
let state = gestureRecognizer.state

// Don't do anything until |scrollView| reached bottom
if scrollView.contentOffset.y >= -80.0 {
return;
}

// Do whatever you want with |scrollView|
}
break;
case .cancelled:
case .ended:
case .failed:
default:
break;
}
}

同时实现 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer: 让手势和 ScrollView 协同工作

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}

关于ios - 无需触摸即可手动启动 UIPanGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52306834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com