【问题标题】:UINavigationController hide bars when keyboard appears crashes app (SWIFT)键盘出现时 UINavigationController 隐藏栏崩溃应用程序 (SWIFT)
【发布时间】:2015-02-09 11:39:13
【问题描述】:

我正在使用几个故事板向用户展示我的观点。故事板都以UINavigationController 打开,其中嵌入了必要的视图。

要为用户选择相应的故事板,我在 AppDelegate 中运行一些逻辑,然后加载故事板。

AppDelegate

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
    let navigationController:UINavigationController = storyboard.instantiateInitialViewController() as UINavigationController
    let rootViewController:UIViewController = storyboard.instantiateViewControllerWithIdentifier("Initial") as UIViewController
    navigationController.viewControllers = [rootViewController]
    self.window?.rootViewController = navigationController
}

一切顺利。但是,如果我勾选选项,当键盘出现时UINavigationController 应该隐藏栏(使用UITextField),应用程序崩溃。不过只在 iOS 8 中。iOS 7 运行流畅。

出现键盘时隐藏导航栏

这是我得到的错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OS_dispatch_queue _hideForKeyboardAppearance]: unrecognized selector sent to instance 0x15d67540'

libc++abi.dylib:以 NSException 类型的未捕获异常终止

我猜代表团是因为我加载故事板的方式而搞砸了。如果我通过

手动隐藏导航栏
@IBAction func editTextFieldStart(sender: AnyObject) {
    self.navigationController?.navigationBarHidden = true
}

一切正常。我只是好奇为什么它不能以另一种方式工作。

【问题讨论】:

    标签: ios swift uinavigationcontroller navigationbar


    【解决方案1】:

    应该反过来。 Apple 在其文档中表示,此属性仅适用于 iOS(8.0 及更高版本)。

    【讨论】:

    • Ashraf:我刚刚重新测试过。在 Iphone 4 上它运行得很好,在 iOS 8 上运行的 Iphone 5 它崩溃了。很奇怪。
    • 你能仔细检查那些 iOS 版本吗?您看到的错误确实指向@Ashraf 所指出的内容。
    • 当然。 Iphone4 在 7.1.2 上运行。另一台设备 iPhone 5 在 8.1.3 上运行。代码在 iPhone 5 上崩溃。我可以构建一个小型测试项目,将其缩小到我的问题并上传。
    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 2012-09-08
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    相关资源
    最近更新 更多