UISearchController / UISearchBar в MacOS ведет себя иначе, чем iOS - PullRequest
0 голосов
/ 20 октября 2019

У меня есть стандартный UISearchController со стандартным UISearchBar. Панель поиска отображается на панели навигации. На iOS / iPadOS все работает как положено. Но панель поиска в MacOS ведет себя по-разному.

В iOS, когда вы нажимаете на панель поиска, значок there появляется, только если в строке поиска есть текст. Это не показывает, когда нет текста. Если коснуться значка ?, текст в строке поиска будет удален. Пока все хорошо.

Но под macOS значок appears появляется сразу и остается на виду, есть ли на панели поиска текст или нет. Хуже того, когда вы нажимаете на значок,, текст не только удаляется из панели поиска, но и весь контроллер поиска отменяется. Это так же, как если бы кнопка «Отмена» была нажата. Фактически, метод UISearchBarDelegate searchBarCancelButtonClicked вызывается при нажатии на значок ((но не в iOS).

Для справки приведен соответствующий код в методе viewDidLoad простого представленияконтроллер, который демонстрирует проблемы:

navigationItem.rightBarButtonItem = editButtonItem

let results = UITableViewController(style: .plain)

let sc = UISearchController(searchResultsController: results)
sc.delegate = self
sc.obscuresBackgroundDuringPresentation = true
sc.automaticallyShowsCancelButton = true
sc.hidesNavigationBarDuringPresentation = true // Setting to false causes other problems unrelated to this question

sc.searchBar.delegate = self

navigationItem.searchController = sc

В реальном приложении MacOS, таком как стандартное приложение Mail, панель поиска ведет себя так же, как UISearchBar в iOS, а не UISearchBar в macOS.

Это ошибка в Mac Catalyst или мне не хватает какого-либо свойства или делегата, из-за которых UISearchBar и его значок to будут работать под macOS так же, как под iOS?

...