当键盘出现时,导航栏内的 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 强制键盘出现