【问题标题】:Keyboard doesn't show for search controller in second tab bar item在第二个标签栏项目中不显示搜索控制器的键盘
【发布时间】:2019-08-30 12:27:26
【问题描述】:

我有一个推送UITabBarController 的导航控制器。所以,我所有的标签视图控制器都将共享同一个导航栏。到目前为止没有问题,因为我每次调用 tabBarController(_:didSelect:) 时都会设置导航项的内容。

假设我们在标签栏中只有 2 个控制器,每个控制器都有一个 UISearchController。附加到导航项后,每次调用 tabBarController(_:didSelect:) 时都会配置此搜索控制器。

直到现在,一切都按要求工作和看起来。

问题是,当我从第一个控制器点击搜索栏时,键盘出现并且搜索正常,但是当我从第二个控制器点击搜索栏时,没有任何反应。

[在第二个标签中] 我知道调用了UISearchBarDelegatesearchBarShouldBeginEditing(_:),但是如果我尝试使用该方法设置searchController.isActive = true,那么应用程序将崩溃并显示以下消息:Attempt to present UISearchController on <FirstTabViewController> whose view is not in the window hierarchy

你遇到过这个问题吗?

【问题讨论】:

    标签: ios swift uitabbarcontroller uisearchcontroller


    【解决方案1】:

    您在访问第二个视图控制器时是否将definesPresentationContext 属性设置为true?

    【讨论】:

    • 确实与definesPresentationContext的使用有关。我必须在第一个视图控制器中将 viewWillDisappear 设置为 false,并在第二个视图控制器中配置 navigationItem 时将其设置为 true。合而为一,选定的视图控制器应该定义表示上下文。
    猜你喜欢
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 2018-02-11
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    相关资源
    最近更新 更多