Кнопка отмены не отображается в UISearchBar
У меня есть UICollectionView
. При нажатии кнопки поиска в UINavigationBar
я добавляю UISearchController
searchbar
в качестве заголовка для UINavigationItem
. Для iPhone он работает правильно. Для iPad кнопка cancel
не отображается. Только панель поиска принимает всю ширину.
![enter image description here]()
Может ли кто-нибудь помочь мне в этом?. Спасибо заранее.
Ответы
Ответ 1
iOS7 не отображает кнопку отмены при добавлении в панель навигации. Вы можете поместить панель поиска в другое представление, подобное этому.
UISearchBar *searchBar = [UISearchBar new];
searchBar.showsCancelButton = YES;
[searchBar sizeToFit];
UIView *viewForSearchBar = [[UIView alloc]initWithFrame:searchBar.bounds];
[viewForSearchBar addSubview:searchBar];
self.navigationItem.titleView = viewForSearchBar;
Ответ 2
У меня была та же проблема, на iPhone отмена поиска была показана хорошо, но на iPad этого не произошло.
Обходной способ обертывания UISearchBar
в другом UIView
не сработал у меня, поскольку он имел разный внешний вид и неправильную ширину при вращении.
Мое решение является простым: используйте поиск WITHOUT cancel и добавьте отмену как UIBarButtonItem
.
Ответ 3
Попробуйте это. Добавьте галочку для кнопки отмены отмены.
![enter image description here]()
Ответ 4
Быстрая версия: -
Я попробовал метод @Nikita Khandelwal, но все же он не подходит для просмотра ipad. Вот быстрый код, который был задан как исправленный ответ: -
let searchBar: UISearchBar = UISearchBar()
searchBar.showCancelButton = true
searchBar.placeholder = "Search Your Job Title"
searchBar.fitToSize()
searchBar.delegate = self //do not need if you delegate searchBar
let viewForSearchBar: UIView = UIView(frame: searchBar.bounds)
viewForSearchBar.addSubview(searchBar)
self.navigationItem.titleView = viewForSearchBar
********* Но есть другой способ правильно установить кнопку отмены и подгонять для представления: -
-
Установите строку поиска в виде заголовка панели навигации: -
let searchBar: UISearchBar = UISearchBar()
searchBar.showCancelButton = true
searchBar.placeholder = "Search Your Job Title"
searchBar.delegate = self //do not need if you delegate searchBar
self.navigationItem.titleView = searchBar
-
Перетащите кнопку "Бар" в правую сторону контроллера просмотра и назовите ее "Отмена".
-
Затем подключите эту кнопку к этой функции: -
@IBAction func iPadCancelButton(sender: AnyObject) {
UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
self.dismissViewControllerAnimated(true, completion: nil)
}
Ответ 5
Added rightBarButtonItem with selector will work fine for me. And adding searchBar inside view before setting to navigation title view was not showing properly.
Code:-
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.dismissView))
func dismissView() {
if self.controller?.navigationController?.popViewController(animated: true) == nil {
self.controller?.dismiss(animated: true, completion: nil)
}
}