gpt4 book ai didi

ios - 从屏幕边缘滑动到 UICollectionView

转载 作者:行者123 更新时间:2023-11-30 12:40:15 27 4
gpt4 key购买 nike

Scheme of views

大家好!

我有:

  • View - 是 UIViewController 的主视图
  • B View - 是 UIView 和 A View 的 subview (A_view.addsubview(B_view))
  • C View - 是 UICollectionView 和 A View 的 subview ...

问题是什么?

我无法在父 View Controller 中捕获触摸、滑动事件。

我的意思是什么?

当我尝试使用以下方式捕获触摸事件时:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {...

在 View Controller 中我可以看到这样的结果。

我尝试通过添加到 A_view 的 UIScreenEdgePanGestureRecognizer 捕获滑动

触摸 View -> TouchesBegan(...) -> 有效

在 View 上滑动 -> UIScreenEdgePanGestureRecognizer -> 有效

触摸 B View -> attemptsBegan(...) -> 有效

在 B View 上滑动 -> UIScreenEdgePanGestureRecognizer -> 有效

触摸 C View -> TouchesBegan(...) -> 不起作用

在 C View 上滑动 -> UIScreenEdgePanGestureRecognizer -> 不起作用

我注意到我可以在 C View Controller 中捕获触摸事件。

问题

是否有可能在 View Controller (UIViewController)中捕获C View (UICollectionView)上产生的滑动/触摸事件。

我的目标

我的目标是创建 SideBar View ,当我尝试在 C View (UICollectionView)上捕获屏幕边缘的滑动时,它只是在内部滚动,但我想在手指启动时打开 SideBar

最佳答案

如果您需要在每个 ScrollView 上识别边缘滑动手势。 (UICollectionView是一个UIScrollView)

extension UIScrollView {
open override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
print("gesture recognizer should begin")
print(gestureRecognizer)
let app = UIApplication.shared.delegate as? AppDelegate
if let view = app?.window?.rootViewController?.view, !(gestureRecognizer is UIScreenEdgePanGestureRecognizer) {
let location = gestureRecognizer.location(in: view)
if location.x < view.frame.maxX * 0.05 || location.x > view.frame.maxX * 0.95 {
return false
}
}
return super.gestureRecognizerShouldBegin(gestureRecognizer)
}
}

关于ios - 从屏幕边缘滑动到 UICollectionView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42320445/

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