当键盘出现崩溃app(SWIFT)时,UINavigationController隐藏栏

时间:2015-02-09 11:39:14

标签: ios swift uinavigationcontroller navigationbar

我正在使用几个故事板向用户展示我的观点。故事板全部以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运行顺畅。

键盘出现时隐藏导航栏

shows the option to hide the navbar when keyboard appears

这是我得到的错误:

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
}

一切正常。我只是好奇为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

应该是相反的方式。 Apple在其文档中称该属性仅适用于iOS(8.0及更高版本)。