Как правильно скрыть кнопки прицела - PullRequest
0 голосов
/ 08 октября 2018

Исходное состояние:

Initial state

sb.showsScopeBar имеет значение false

searchBarShouldBeginEditing сделать кнопки области видимости, когда панель поискаактивировано:

func searchBarShouldBeginEditing(_ sb: UISearchBar) -> Bool {
        sb.setShowsCancelButton(true, animated: true)
        sb.scopeButtonTitles = scopeButtonTitles
}

enter image description here

Нажатие на кнопку отмены, правильно скрывает кнопки прицела, и мы возвращаемся в исходное состояние.

NB Это поведение по умолчанию, и наш searchBarCancelButtonClicked ничего не делает, кроме восстановления предыдущего текста запроса, если необходимо.

Initial state

Теперь идут раздражающие биты ...

Если я добавлю

sb.setShowsCancelButton(false, animated: true)

либо в searchBarShouldEndEditing, либо в searchBarTextDidEndEditing, кнопка отмены исчезнет, ​​а кнопки области видимости просто уменьшатся:

enter image description here

При добавлении sb.scopeButtonTitles = nil кнопки области видимости исчезают, но размер строки поиска не изменяется:

enter image description here

Вызов sb.sizeToFit (), похоже, совсем не помогает ... использование sb.showsScopeBar полностью нарушает интерфейс панели поиска.

1 Ответ

0 голосов
/ 08 октября 2018

Нашли решение!

Чтобы смоделировать поведение нажатия кнопки отмены (скрыть кнопки области и изменить размер панели поиска):

func searchBarTextDidEndEditing(_ sb: UISearchBar) {
    sb.setShowsCancelButton(false, animated: true)
    searchController?.isActive = false
}

Нам не нужно устанавливать sb.scopeButtonTitles равным nil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...