Я знаю, что это старый, но я смог решить его, и я не смог найти что-то еще на SO, которое решило бы это для меня, поэтому вот что сработало (в Swift 3):
Включитькнопка отмены, когда клавиатура прячется.Добавьте это к viewDidLoad ():
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardNotification(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
в методе клавиатурных уведомлений (уведомлений :), реагируйте на уведомления клавиатурыDidHide:
func keyboardNotification(notification: NSNotification) {
if notification.name == Notification.Name.UIKeyboardDidHide {
self.enableSearchCancelButton()
}
}
Кнопка enableSearchCancelButton берется из ответов других пользователей здесь .
func enableSearchCancelButton() {
//enable the cancel button
for view1 in searchBar.subviews {
for view2 in view1.subviews {
if let button = view2 as? UIButton {
button.isEnabled = true
button.isUserInteractionEnabled = true
}
}
}
}
Наконец, не забудьте удалить контроллер представления в качестве наблюдателя:
deinit {
NotificationCenter.default.removeObserver(self)
}