У меня UICollectionView. При нажатии кнопки поиска в UINavigationBar я добавляю searchbarUISearchController в качестве заголовка для UINavigationItem. Для айфона работает нормально. Для iPad кнопка cancel не отображается. Только панель поиска занимает всю ширину.
Может ли кто-нибудь помочь мне в этом? Заранее спасибо.
Используете ли вы разные раскадровки или xib для iPhone и iPad? Nirav Gadhiya 27.05.2015
Нет. Я не использую раскадровки или xib. Sheik_101 27.05.2015
Попробуйте установить searchBar.showsCancelButton = YES; Nirav Gadhiya 27.05.2015
возможный дубликат iOS7, когда UIsearchbar добавлен в UINavigationBar, не отображающий отмену кнопка Nirav Gadhiya 27.05.2015
В документации четко указано: значение этого свойства игнорируется, и кнопка отмены не отображается для приложений, работающих на iPad. Я не думаю, что это уместно, особенно для сценариев скольжения/разделения просмотра. Поэтому я подал радар: openradar.appspot.com/37498710 Ortwin Gentz 13.02.2018
У меня была такая же проблема, на iPhone отмена поиска показывалась хорошо, а на iPad - нет.
Обходной путь, заключающийся в переносе UISearchBar в другой UIView, не сработал для меня, так как он имел другой вид и неправильную ширину при вращении.
Мое решение простое - используйте поиск БЕЗ отмены и добавьте отмену как UIBarButtonItem.
Ответ 3 · рейтинг 2 · Kaey
Попробуй это. Добавьте галочку для показа кнопки отмены.
Кнопки отмены не отображаются для приложений, работающих на iPad, даже если вы укажете YES для параметра showCancelButton.
Я не уверен насчет альтернативы, но это то, что предлагает нам Apple.
Ответ 5 · рейтинг 1 · Chathuranga Silva
Быстрая версия: -
Я попробовал метод @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
Перетащите кнопку "Панель" в правую часть контроллера представления и назовите ее "Отмена".
Для iOS 13, созданной с помощью Xcode 11, мне нужно вручную установить отображаемое значение на кнопке отмены, в зависимости от того, виден ли контроллер поиска