Как скрыть клавиатуру при использовании UIPickerView с Swift 4? - PullRequest
0 голосов
/ 01 января 2019

У меня проблема с моим кодом, потому что я использую UIPickerView, но когда мы переключаемся с одного текстового поля на другое, клавиатура не прячется, несмотря на мой код ниже.

Я был бы рад, если бы кто-нибудь мне помог.

(Я провел исследование об этой ошибке, но ни один из кодов, которые я видел, не решил мою проблему)

@IBOutlet weak var colorPickerView: UIPickerView!

public func numberOfComponents(in pickerView: UIPickerView) -> Int{
    return 1
}

public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
    return list.count
}


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    self.view.endEditing(true)
    return list[row]
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    self.colorTxtField.text! = self.list[row]
    self.colorPickerView.isHidden = true
}


func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == self.colorTxtField {
        self.colorPickerView.isHidden = false
        textField.endEditing(true)

    }
}

Я был бы рад, если бы кто-то мне помог.

Ответы [ 2 ]

0 голосов
/ 25 мая 2019

Обнаружил ту же проблему с некоторым временем и без особой удачи .. Но какой-то обходной путь, который я получил от @D.Комментарий Мики (спасибо!) Выше заключается в реализации textFieldShouldBeginEditing:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    self.view.endEditing(true)
    //or:
    self.view.resignFirstResponder()
    return true
}

Это решение несколько помогает, потому что оно скрывает клавиатуру, оставшуюся от предыдущего текстового поля, но не позволяет редактировать следующее нажатое поле немедленно - так что де-факто пользователь должен нажать его дважды.Еще лучше так, чем нет

0 голосов
/ 01 января 2019

Я думаю, что вы показываете pickerView неправильно.Вам не нужно писать

func textFieldDidBeginEditing (_ textField: UITextField)

вместо того, чтобы показать средство выбора, просто напишите эту строку в вашем viewDidLoad

self.colorTxtField.inputView = self.colorPickerView
...