我一直在Swift UI中使用以下扩展来启用向后滑动手势,即使导航栏被隐藏。但是,在更新到iOS 17(beta)后,似乎这段代码不再起作用。我不确定这是否是新iOS版本中的一个bug,或者是否有不同的方法来实现此功能。谁能帮我解决这个问题或建议一个替代解决方案?
extension UINavigationController: UIGestureRecognizerDelegate {
open override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
// Allows swipe back gesture after hiding standard navigation bar with .navigationBarHidden(true).
public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
viewControllers.count > 1
}
// Allows interactivePopGestureRecognizer to work simultaneously with other gestures.
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
viewControllers.count > 1
}
// Blocks other gestures when interactivePopGestureRecognizer begins (my TabView scrolled together with screen swiping back)
public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
viewControllers.count > 1
}
}
复制步骤:
创建SwiftUI项目。使用提供的扩展来启用向后滑动手势。在视图上设置.navigationBarHidden(true)。试着向后滑动视图。预期行为:视图应该响应向后滑动手势,即使导航栏隐藏。
实际行为:向后滑动手势不起作用,视图保持不变。
其他信息:
我已经在iOS 16上测试了这段代码,它像预期的那样工作。我已经验证了这个问题特别发生在iOS 17测试版上。我的Xcode版本是[15 A5219 j]。我没有对我的代码做任何其他重大更改。如能协助解决这一问题或提出替代办法,将不胜感激。谢谢你,谢谢!
通过提供此信息,您应该会从Stack Overflow社区获得相关帮助,无论是问题的解决方案还是与iOS 17兼容所需的任何更改的指导。
1条答案
按热度按时间ffdz8vbo1#
也许你可以试试这个