iOS 13 UIBarButtonItem не активируется и перекрывает UINavigationBars при использовании UISearchController - PullRequest
8 голосов
/ 27 сентября 2019

У меня есть панель навигации, содержащая несколько UIBarButtonItem кнопок и UISearchBar, подключенных вот так

var searchController: UISearchController!

override func viewDidLoad() {
    super.viewDidLoad()

    title = "Test"

    tableView.delegate = self
    tableView.dataSource = self

    searchController = UISearchController(searchResultsController: nil)
    navigationItem.searchController = searchController

    // This leads to the bug
    searchController.hidesNavigationBarDuringPresentation = false

    navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(leftTapped))
    navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(rightTapped))
}

Сценарий: я нажимаю на панель поиска и затем нажимаю "Отмена".

  • Проблема 1. Кнопки панели не реагируют на прикосновение , за исключением тех случаев, когда я касаюсь большинства внешних пикселей экрана (возможно только при нажатии симулятора и мыши).

  • Проблема 2: элементы навигации перекрываются , когда я нажимаю другой контроллер вида.

enter image description here

Когда я использую hidesNavigationBarDuringPresentation = true, он работает, как и ожидалось.


Проблема появляется на iPhone с надрезом и без надреза iOS 13.0 и 13.1 с использованием Xcode 11.0 и 11.1.

Вот весь тестовый проект: https://github.com/fl034/HidesNavigationBarDuringPresentationTest


Я подал радар (и вы тоже должны), но, может быть, некоторые из вас, ребята, уже обошли его?


Обновление : ошибка все еще существует в iOS 13.1.1

1 Ответ

2 голосов
/ 27 сентября 2019

Отладчик представления показывает, что происходит с этой ошибкой.Содержимое панели навигации копируется.Вот как выглядит панель навигации перед отображением поиска:

enter image description here

И вот как она выглядит впоследствии:

enter image description here

Проблема заключается в двух видах репликации и дополнительной UILabel.Я не знаю, что они там делают, и я не могу найти способ их удалить.

РЕДАКТИРОВАТЬ Кстати, я думаю, что некоторые приложения Apple отображают ту же ошибку,Проще увидеть, есть ли у вас большие заголовки, потому что тогда вы можете одновременно видеть большой заголовок и дополнительный ярлык:

enter image description here

...