gpt4 book ai didi

ios - 如何检测页面 View Controller 上的滑动?

转载 作者:行者123 更新时间:2023-11-28 15:31:43 27 4
gpt4 key购买 nike

即使没有任何 View Controller 可滑动,我如何检测页面 View Controller 上的滑动?

最佳答案

Page View Controller 有一个包含在 scrollView 中的内置手势识别器。这是一个平移手势识别器(参见 https://developer.apple.com/documentation/uikit/uiscrollview/1619425-pangesturerecognizer )。但是,页面 View Controller 的 ScrollView 属性不是公开的(参见 https://developer.apple.com/documentation/uikit/uipageviewcontroller)。您可以扩展页面 View Controller 类来改变此行为并公开 ScrollView ,以便在用户滚动浏览所有可用 View 后继续出现平移手势。

extension UIPageViewController {

public var scrollView: UIScrollView? {
for view in self.view.subviews {
if let scrollView = view as? UIScrollView {
return scrollView
}
}
return nil
}

}

接下来,您应该在 View 加载方法中添加 Root View Controller 作为 ScrollView 平移手势的目标,并包含当 ScrollView 的手势识别器检测到平移手势时您想调用的方法。您也可以使用存储在 Root View Controller 上的属性来跟踪滑动次数。请注意,如果您想跟踪最终 View Controller 之外的滑动,您需要在 Root View Controller 上设置一个 bool 属性,该属性在用户滑动到页面 View Controller 中的最终 View 并且仅开始后设置为 true达到此阈值后跟踪滑动。

override func viewDidLoad() {
. . .
pvController.scrollView?.panGestureRecognizer.addTarget(self, action:#selector(self.handlePan(sender:)))
}

func handlePan(sender:UIPanGestureRecognizer) {
switch sender.state {
case .ended:
self.numberOfSwipes = self.numberOfSwipes + 1
print("User Swiped ")
print(self.numberOfSwipes)
default:
break
}
}

您可能想在您的 View Controller 上设置一个 bool 属性,该属性在用户使用所有 View 后触发,以便您知道滑动是在 View 之外发生的。我将应用程序的代码放在 https://bitbucket.org/stonybrooklyn/pageviewcontroller/ 的公共(public)仓库中。供大家引用。

关于ios - 如何检测页面 View Controller 上的滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44661615/

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