Есть ли конкретная причина, по которой resignFirstResponder () не вызывается? - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь реализовать метод в XCode, называемый «shouldHideSearchKeyboard», который просто скрывает клавиатуру при нажатии клавиши возврата. Проблема в том, что не только не вызывается функция resignFirstResponder (), но и вовсе не вызывается shouldHideSearchKeyboard, что указывает на серьезную ошибку. Я смущен этим, так как (1) я попробовал каждое решение по этой проблеме, предложенное на веб-сайте, и (2) я реализовал точно такую ​​же функцию, за исключением текстовых полей без проблем. Спасибо!

Я дважды проверил, чтобы убедиться, что UISearchBarDelegate был добавлен в мой класс SearchTab, включил UISearchBar в качестве параметра в метод, сделал вывод IB, соединяющий панель поиска с моим кодом, и установив делегат выхода равным самостоятельно. Тем не менее, mustHideSearchkeyboard никогда не вызывается.

@IBOutlet weak var IB_SearchBar: UISearchBar!
class SearchTab: UIViewController, UISearchBarDelegate {
   override func viewDidLoad()
{
   super.viewDidLoad()
   self.IB_SearchBar.delegate = self
}

func hideSearchBarKeyboard(_ searchBar: UISearchBar) -> Bool
    {
// Neither resignation nor print statement gets called
        searchBar.resignFirstResponder()
        print("Search bar entry")
return true
    }

}

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

, если searchBar - единственный респондент, которого вы можете использовать;

override var canBecomeFirstResponder: Bool {
        return true
    }

&

view.endEditing(true) вместо searchBar.resignFirstResponder()

0 голосов
/ 07 июля 2019

Пожалуйста, используйте стандартное уведомление Apple. Добавьте делегата и используйте функции делегата Apple:

в делегате набора didLoad ...

//MARK: UISearchBarDelegate


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) // called when text changes (including clear) {
        self.reload.....

}

...