tvOS 14 - UISearchController 解散整个 UITabController

Posted

技术标签:

【中文标题】tvOS 14 - UISearchController 解散整个 UITabController【英文标题】:tvOS 14 - UISearchController dismissing the entire UITabController 【发布时间】:2020-10-09 21:21:23 【问题描述】:

从第一天开始,我就遇到了 UISearchController 的几个问题,但我总是设法解决它。但是,对于 tvOS 14,我现在遇到了一个我不明白的问题:

    我展示了我的标签控制器 从 tabController 的 viewController 之一,我展示了 searchController; 我按菜单关闭它。

结果:searchController 和整个 tabController 被解除。

预期:只有 searchController 应该被关闭并返回到我提供它的 viewController。

这只发生在 tvOS14 中,在 tvOS13.X 中运行良好。

我试图在关闭 presentingViewController 之前检查它,由于某种原因,它是 tabController 而不是我展示它的 viewController。 这是要展示的一段代码:

    UISearchController *searchController = [[UISearchController alloc] initWithSearchResultsController:resultVC];
    searchController.searchResultsUpdater = resultVC;
    searchController.delegate = resultVC;
    searchController.searchBar.delegate = resultVC;
    
    [strongSelf presentViewController:searchController animated:YES completion:nil];

当我按下菜单,或者从 resultVC 中的按钮操作中执行此代码时:

[self dismissViewControllerAnimated:YES completion:nil];

我得到了上面解释的结果。 如果我这样做,结果相同:

[self.searchController dismissViewControllerAnimated:YES completion:nil];

我也尝试将所有内容包装成UISearchContainerViewController,但结果是一样的。

有人知道吗?

【问题讨论】:

【参考方案1】:

我为 Apple 打开了一个错误。

与此同时,我解决了创建一个新的UIViewController,在那里呈现UISearchViewController,然后呈现这个新的视图控制器。仅适用于 tvOS14。

要关闭它,我首先关闭搜索控制器,然后关闭新的视图控制器。

为了处理对“菜单”按钮的点击,我在结果视图控制器和搜索视图控制器中覆盖了pressesBegan(通过自定义类)。

【讨论】:

以上是关于tvOS 14 - UISearchController 解散整个 UITabController的主要内容,如果未能解决你的问题,请参考以下文章

如何确保构建使用 v14.x iOS/tvOS 模拟器?

tvOS 上的 GCDWebServer

tvOS 对 iBeacons 的支持

TVos 中表格视图单元格之间的空间

将 GCController 与 tvOS 模拟器一起使用

在 tvos 中更改焦点时如何关闭 UISearchController 中的键盘?