当我在 NavigationBar 中单击 UISearchBar 时没有任何反应

Posted

技术标签:

【中文标题】当我在 NavigationBar 中单击 UISearchBar 时没有任何反应【英文标题】:Nothing happens when I click UISearchBar in NavigationBar 【发布时间】:2014-12-21 21:52:58 【问题描述】:

我在初始 UIViewController 中添加了一个 UISearchBar,一切正常。但是,当我添加相同的 UISearchBar 时,以相同的方式添加到另一个 ViewController,它被推到第一个之上,当我单击 searchBar 时似乎没有发生任何事情。没有委托方法被触发,没有键盘出现,什么都没有。

这就是我将它添加到导航栏的方式:

- (void)viewDidLoad 
    [super viewDidLoad];


    UITableViewController *searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
    searchResultsController.tableView.dataSource = self;
    searchResultsController.tableView.delegate = self;

    self.searchResults = [NSMutableArray array];

    self.searchController = [[UISearchController alloc] initWithSearchResultsController:searchResultsController];
    self.searchController.searchResultsUpdater = self;
    self.searchController.hidesNavigationBarDuringPresentation = NO;



    self.searchController.searchBar.placeholder = NSLocalizedString(@"Search, eh?", nil);

    // Include the search bar within the navigation bar.
    self.navigationItem.titleView = self.searchController.searchBar;

    self.definesPresentationContext = YES;



就像我说它在第一个 UIViewController 中工作一样,我是否在我尝试添加的其他 2-3 个视图控制器中遗漏了一些东西?我不明白为什么 searchBar 会出现在导航栏中,但是单击它时什么也没有发生。我也这样设置了委托:

@interface ViewController () <UISearchResultsUpdating>

【问题讨论】:

【参考方案1】:

尝试在第一个视图控制器上将definesPresentationContext 设置为NO,一旦您在第一个视图控制器上呈现一个新视图控制器。

我相信演示文稿会沿着视图控制器层次结构向上走,寻找定义上下文的第一个而不是向下。

【讨论】:

现在很好用。我想我只需要熟悉一下定义PresentationContext,因为我仍然对那条线的实际作用感到很困惑。似乎 searchBar 是唯一不能在其他视图上工作的东西,但其他一切似乎都工作正常。

以上是关于当我在 NavigationBar 中单击 UISearchBar 时没有任何反应的主要内容,如果未能解决你的问题,请参考以下文章

没有焦点时如何在SearchBar中单击一次取消按钮

如何禁用多个按钮?

SearchBar 和 NavigationBar 之间的空格 - Swift

SplitViewController detailViewComtroller 的 NavigationBar 颜色变为粉灰色

没有 NavigationBar 的 UINavigationController

当 UISearchbar 点击时从私人有效用户设置中读取