UITabBarController 中的 UISearchController 没有响应触摸

Posted

技术标签:

【中文标题】UITabBarController 中的 UISearchController 没有响应触摸【英文标题】:UISearchController in UITabBarController is not responding to touch 【发布时间】:2015-08-18 18:12:45 【问题描述】:

我有一个 tabbarcontroller,它位于 uinavigationcontroller 内部,我试图在其中一个选项卡上的 tableviewheader 中放置一个搜索栏。我能够在导航控制器上的任何屏幕上成功使用下面的代码,但是当视图位于 tabbarcontroller 上时,搜索不会响应触摸。我可以成功地将其设置为在代码中处于活动状态,但我也需要触摸才能工作。

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.searchBar.scopeButtonTitles = @[@"SEARCH"];
[self.searchController.searchBar setPlaceholder:@"SEARCH"];
self.searchController.searchBar.delegate = self;
self.searchController.delegate = self;
self.searchController.searchBar.backgroundColor = [UIColor colorWithRed:0.843 green:0.843 blue:0.843 alpha:1];
self.searchController.searchBar.tintColor = [UIColor blackColor];
self.myTableView.tableHeaderView = self.searchController.searchBar;
self.definesPresentationContext = YES;
[self.searchController.searchBar sizeToFit];

【问题讨论】:

【参考方案1】:

我遇到了类似的问题,发现self.definesPresentationContext = YES; 行是问题的根本原因(更多信息:UISearchController and definesPresentationContext)。

确保类设置self.definesPresentationContext = YES; 也是搜索栏的父视图控制器。如果您使用您提供的代码初始化UISearchController,然后将搜索栏分配给层次结构之外的视图,这可能会导致问题。

【讨论】:

以上是关于UITabBarController 中的 UISearchController 没有响应触摸的主要内容,如果未能解决你的问题,请参考以下文章

UITabBarController 问题中的 UINavigationController

UITabBarController 中的 UINavigationController 没有完全包裹 UIViewController

嵌入在 NavigationController 中的 UITabBarController

以编程方式将 UITabBarController 中 TabBarItem 中的图标居中

在 UITabBarController 中的两个子视图控制器之间转换

UITabBarController 中的 UINavigationController,设置导航控制器标题