Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Кнопка отмены не отображается в UISearchBar

Автор вопроса: Sheik_101Ответов: 6

У меня UICollectionView. При нажатии кнопки поиска в UINavigationBar я добавляю searchbar UISearchController в качестве заголовка для 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

iosobjective-cuisearchbaruisearchcontroller

Ответы

Ответ 1 · рейтинг 18 · Nikita Khandelwal

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 · рейтинг 7 · Tal Haham

У меня была такая же проблема, на iPhone отмена поиска показывалась хорошо, а на iPad - нет.

Обходной путь, заключающийся в переносе UISearchBar в другой UIView, не сработал для меня, так как он имел другой вид и неправильную ширину при вращении.

Мое решение простое - используйте поиск БЕЗ отмены и добавьте отмену как UIBarButtonItem.

Ответ 3 · рейтинг 2 · Kaey

Попробуй это. Добавьте галочку для показа кнопки отмены.

Ответ 4 · рейтинг 2 · Muhammad Usman Aleem

Согласно документации Apple setShowsCancelButton

Кнопки отмены не отображаются для приложений, работающих на 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

********* Но есть еще один способ правильно установить кнопку отмены и соответствовать виду: -

  1. Установите панель поиска в качестве заголовка панели навигации: -

    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
    
  2. Перетащите кнопку "Панель" в правую часть контроллера представления и назовите ее "Отмена".

  3. Затем подключите эту кнопку к этой функции: -

    @IBAction func iPadCancelButton(sender: AnyObject) {
           UIApplication.sharedApplication().sendAction("resignFirstResponder", to:nil, from:nil, forEvent:nil)
          self.dismissViewControllerAnimated(true, completion: nil)
    }
    

Ответ 6 · Nostradamus

Для iOS 13, созданной с помощью Xcode 11, мне нужно вручную установить отображаемое значение на кнопке отмены, в зависимости от того, виден ли контроллер поиска

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы