当键盘出现时,导航栏内的 UISearchBar 会受到尊重

Posted

技术标签:

【中文标题】当键盘出现时,导航栏内的 UISearchBar 会受到尊重【英文标题】:UISearchBar inside a NavigationBar Get Deferenced When Keyboard Shows Up 【发布时间】:2013-12-21 15:38:13 【问题描述】:

我在导航栏中放置了一个搜索栏。这是代码

self.navigationBar =[[UINavigationBar alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 64)];
[self.view addSubview:self.navigationBar];

self.doneButton = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                           target:self
                                                           action:@selector(doneButtonPressed)];
self.searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 64)];
self.searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
self.searchBar.placeholder = @"Name of City";
self.searchBar.delegate = self;

self.searchController = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBar contentsController:self];
self.searchController.delegate = self;
self.searchController.searchResultsDelegate = self;
self.searchController.searchResultsDataSource = self;
self.searchController.searchResultsTitle = @"Add Location";
self.searchController.displaysSearchBarInNavigationBar = YES;
self.searchController.navigationItem.rightBarButtonItems = @[self.doneButton];
self.navigationBar.items = @[self.searchController.navigationItem];

但搜索栏的行为不正确。

我希望它看起来像这样

【问题讨论】:

@ElGuapo 搜索框不在前面。我已经更新了问题,添加了预期的 ui。 这是 Sol 吗?我在查看代码时看到了同样的问题。 :D @LeoNatan,是的,我想修复它。有什么想法吗? @fengd 在该区域引入了一些更改。确保你使用最新的可用代码,看看它现在是否更好。 @LeoNatan 我相信它是最新的。我刚下载了。 【参考方案1】:

在将searchBar 设置为第一响应者后,我已通过将navigationBar 置于前面来解决此问题

[self.searchController setActive:YES animated:NO];
[self.searchController.searchBar becomeFirstResponder];
[self.view bringSubviewToFront:self.navigationBar]; //this is the line I add

【讨论】:

以上是关于当键盘出现时,导航栏内的 UISearchBar 会受到尊重的主要内容,如果未能解决你的问题,请参考以下文章

UISearchbar clearButton 强制键盘出现

触摸 UISearchbar 时如何修复偏移键盘

iOS - 导航栏内的动画不起作用

使用 UISearchBar 关闭键盘,而不让第一响应者辞职

当 UIsearchBar 点击和键盘显示时在事务中调用

当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动