Клавиатура не увольняется

Я понимаю, что это тривиальный вопрос с тоннами ответа на SO. Мне может просто понадобиться пара свежих глаз, так как я все трижды проверил и не могу понять, где я ошибаюсь. Я просто хочу отклонить клавиатуру при нажатии клавиши возврата. Я правильно настраиваю делегата и внедряю правильные методы, так почему же клавиатура не отклоняется?

Имеет ли collectionView в viewController усложнять вещи? (текстовое поле НЕ внутри collectionView)

class SearchController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UITextFieldDelegate {

@IBOutlet weak var searchBar: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.delegate = self
    setupUI()

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return true
}

Вещи, которые я пробовал:

  • очистка проекта
  • перезапуск xcode
  • изменяя searchBar.resignFirstResponder() в textField.resignFirstResponder()
  • установка делегата для текстового поля внутри IB вместо viewDidLoad

Какого черта я здесь скучаю!?

2 ответа

Решение

Вам необходимо реализовать правильный метод делегата текстового поля. Нет такого метода делегата, как textFieldShouldReturn(textField:), Правильный метод textFieldShouldReturn(_:),

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return false
}

_ имеет огромное значение. Возможно, вы скопировали старую реализацию Swift 2.

Лучше позволить Xcode выполнить автозавершение кода, чтобы гарантировать, что вы получите правильную подпись любого метода, который вы реализуете или вызываете.

Используйте этот код

view.endEditing(true) 
Другие вопросы по тегам