В первый раз, когда эта часть приложения загружает курсор панели поиска контроллера поиска, он показывает желаемое.
(Проблема) Когда поиск закрывается, а затем (позже) перезагружается, курсор отсутствует:
Это повторяется только с загрузкой/удалением, то есть ничего, что, по-видимому, могло бы/должно изменить оттенок вещей, в результате чего курсор стал бы цветом фона (как это обычно бывает в ответ на отсутствующий курсор, из вопросов и ответов SO, которые я видел на тема.) Тем не менее, больше ничего не работает, просто исчезает курсор.
Некоторые (возможно) осложняющие факторы:
- Этот ViewController, который загружает/выгружает UISearchController (и встраивает UISearchBar в заголовок UINavigationController), является VC содержимого внутри моего пользовательского контейнера VC. Иерархия следующая: (1) UIWindow (2) UINavigationController (3) ContainerVC (4) ContainedVC [родителем является ContainerVC, этот VC выполняет загрузку/выгрузку UISearchController].
- Существуют различные обратные вызовы делегатов (UISearchController, UISearchBar), которые пытаются настроить поведение (например, скрыть кнопку отмены, остановить закрытие между ними), которые, надеюсь, не влияют на что-то, но к сведению.
- «Выгрузить» (остановить/снести) включает в себя различные усилия, чтобы заставить его уйти, удаление панели поиска из представления заголовка, установка контроллера поиска active=false и тому подобное. (Поскольку это происходит после этого, кажется, что это связано, поэтому я пробовал различные перестановки на случай, если что-то поможет. Не повезло.)
Я предпринял различные попытки, чтобы дочерний VC создал свой собственный SearchController и/или использовал его в корневом VC и так далее. Различные перестановки, похоже, работают, но с тем же недостатком. (Таким образом, я чувствую, что ищу источник проблемы/решения не в том месте.)
Я не могу исключить, что цвет курсора изменился, я не совсем понимаю, как он устанавливается/наследуется, особенно с учетом имеющегося у меня стека VC, и как его проверить в отладчике. Я думаю, что это так же просто, как установить глобальный оттенок.
Примечание. Это приложение использует раскадровку с прямыми настройками и не использует прокси внешнего вида много. Тем не менее, он имеет:
// Default tint for application...
UIApplication.sharedApplication().delegate?.window??.tintColor = mainBrandColor
UIToolbar.appearance().tintColor = mainBrandColor
... и я пробовал с различными перестановками оттенков UISearchBar, UINavigationBar через прокси-сервер внешнего вида с таким же поведением (сначала работает, потом не так много). Глядя на это в разное время (т.е. когда работает и когда нет) это показывает тот же цвет:
(lldb) po searchController.searchBar.tintColor
Примечание. Отдельное использование UISearchController (когда вызывающий VC не является дочерним элементом контейнера, а является отправленным VC) НЕ демонстрирует эту проблему. Курсор остается правильным цвет.
Среда: это приложение iOS9.x в Swift на XCode 7.1.
Вот некоторый код, где homeVC является родительским/контейнерным VC:
if nil == homeVC.searchController {
homeVC.searchController = UISearchController(searchResultsController: nil)
homeVC.searchController!.searchResultsUpdater = self
homeVC.searchController!.delegate = self
homeVC.searchController!.searchBar.delegate = self
homeVC.searchController!.searchBar.showsCancelButton = false
homeVC.searchController!.searchBar.returnKeyType = .Done
homeVC.searchController!.searchBar.placeholder = "Add Item"
homeVC.searchController!.searchBar.searchBarStyle = UISearchBarStyle.Minimal
homeVC.searchController!.dimsBackgroundDuringPresentation = false
homeVC.searchController!.hidesNavigationBarDuringPresentation = false
}
homeVC.navigationItem.titleView = homeVC.searchController!.searchBar
Я пробовал с ленивой загрузкой и без нее, с уничтожением/воссозданием и без.
Будем признательны за любые советы/мысли о том, где искать и как устранять неполадки.