gpt4 book ai didi

ios - UINavigationController 交互式弹出手势不起作用?

转载 作者:IT王子 更新时间:2023-10-29 07:54:51 26 4
gpt4 key购买 nike

所以我在为 iOS 7 构建的应用程序中有一个导航 Controller 。 titleView 是可见的,后退按钮和导航栏也是可见的。出于某种原因,交互式弹出手势(从左边缘滑动)不起作用。什么都没发生。当我记录手势时,它不是零。要启用此功能,我需要做什么特别的事情吗?什么会导致它不起作用?

最佳答案

我发现当使用自定义后退按钮时,交互式弹出手势停止工作(我的看法是 Apple 无法预见您的自定义后退按钮的行为方式,因此他们禁用了该手势)。

如前所述,要解决此问题,您可以将 interactivePopGestureRecognizer.delegate 属性设置为 nil

在 Swift 中,这可以通过为 UINavigationController 添加一个扩展来轻松地在整个应用程序中完成,就像这样:

extension UINavigationController {

override public func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = nil
}

}

更新的答案

似乎将委托(delegate)设置为 nil 会导致应用 UI 在某些情况下卡住(例如,当用户在导航堆栈的顶部 View Controller 上向左或向右滑动时)。

因为 gestureRecognizerShouldBegin 委托(delegate)方法不能在扩展中处理,子类化 UINavigationController 似乎是最好的解决方案:

class NavigationController: UINavigationController, UIGestureRecognizerDelegate {

/// Custom back buttons disable the interactive pop animation
/// To enable it back we set the recognizer to `self`
override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}

func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}

}

关于ios - UINavigationController 交互式弹出手势不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18946302/

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