Увольнение клавиатуры с UISearchBar, без отставки первого респондента - PullRequest
9 голосов
/ 09 июня 2010

Эй, я работал над навигационным приложением на iPhone, похожим на приложение контактов. Когда вы что-то вводите в строке поиска и прокручиваете таблицу (в приложении контактов), клавиатура исчезает. Я не думаю, что он подает в отставку первого респондента, хотя, потому что когда я пытаюсь сделать это в - (void) scrollViewDidScroll: (UIScrollView *) scrollView, он отключает кнопку отмены, что не происходит в приложении контактов. По сути, у меня вопрос, как мне закрыть клавиатуру, не отключив кнопку отмены, как в приложении контактов?

Спасибо

Ответы [ 3 ]

4 голосов
/ 30 мая 2016

Ну, просто столкнулся с этим очень старым вопросом.Вы можете активировать кнопку отмены, когда начинаете прокручивать, следующим образом:

func scrollViewWillBeginDragging(scrollView: UIScrollView) {
    searchBar.resignFirstResponder()
    let searchCancelButton = searchBar.valueForKey("cancelButton") as! UIButton
    searchCancelButton.enabled = true // <-- THIS line is the trick

}

Swift 4

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    searchBar.resignFirstResponder()
    let cancelButton = searchBar.value(forKey: "cancelButton") as! UIButton
    cancelButton.isEnabled = true
}
1 голос
/ 27 апреля 2019

Добавление tableView.keyboardDismissMode = .onDrag к viewDidLoad() работает как шарм.

0 голосов
/ 04 февраля 2012

(как указано в автоответчике). Если вы хотите получить поведение при поиске в таблице, как во встроенном приложении контактов, вы не можете просто вставить UISearchBar в представление с UITableView, вместо этого вам нужно использовать UITableViewController вместе с Search Display Controller. Этот пример приложения является идеальным руководством:

https://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

...