Использование кнопок UIB для ввода данных в UITextFields все на пользовательской клавиатуре, клавиатура появляется снова, не вводя текст - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь создать пользовательскую клавиатуру iOS, которая содержится в файлах BibleKeyboardView.swift и BibleKeyboardView.xib.Часть представления содержит несколько полей UITextField, которые я хочу ввести с помощью цифровых кнопок.Однако, когда я нажимаю на любое из полей UITextFields, клавиатура закрывается, а затем снова появляется, курсор никогда не остается в UITextField, а кнопки UIB ничего не делают.

Gif исчезающей клавиатуры /вновь появляющаяся проблема

Я попытался установить каждый из inputView = self UITextField, но это только держало клавиатуру закрытой.Я также установил каждую цифровую кнопку в качестве клавиши клавиатуры в правом меню раскадровки.

Это мой код, но когда я пытаюсь его запустить, activeField равен нулю и выдает ошибку Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value.Код никогда не доходит до textFieldDidBeginEditing(), потому что этот оператор печати не выполняется (на основе Как добавить текст в активный UITextField ).

activeField - ноль скриншот ошибки

class BibleKeyboardView: UIView, UITextFieldDelegate {

    @IBOutlet weak var chapterA: UITextField!
    @IBOutlet weak var verseA: UITextField!
    @IBOutlet weak var chapterB: UITextField!
    @IBOutlet weak var verseB: UITextField!

    var activeField: UITextField?

    override func awakeFromNib() {
        super.awakeFromNib()
        activeField?.delegate = self
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {
        activeField = textField
        activeField?.inputView = self
        print("made active field")
    }

    @IBAction func numBtnTapped(_ sender: UIButton) {
        activeField!.text = activeField!.text! + (sender.titleLabel?.text!)!
}

Мечтаю, чтобы я мог вводить числа в каждый UITextField при нажатии на цифровую клавиатуру, которую я кодировал. Почему клавиатура продолжает исчезать и снова появляться, когда я нажимаю на UITextField?Почему textFieldDidBeginEditing не работает?

1 Ответ

0 голосов
/ 18 февраля 2019

Ответ в конце: установка делегата и inputView для каждого UITextField в пределах awakeFromNib().Кроме того, кажется, что проблема закрытия / повторного появления клавиатуры возникает только на симуляторе iPad, но когда я запускаю ее на реальном iPad, она исчезает.

class BibleKeyboardView: UIView, UITextFieldDelegate {

    @IBOutlet weak var chapterA: UITextField!
    @IBOutlet weak var verseA: UITextField!
    @IBOutlet weak var chapterB: UITextField!
    @IBOutlet weak var verseB: UITextField!

   var activeField: UITextField?

    override func awakeFromNib() {
        super.awakeFromNib()

        chapterA.delegate = self
        chapterA.inputView = self

        verseA.delegate = self
        verseA.inputView = self

        chapterB.delegate = self
        chapterB.inputView = self

        verseB.delegate = self
        verseB.inputView = self
    }

    func textFieldDidBeginEditing(_ textField: UITextField) {
        activeField = textField
    }

    @IBAction func numBtnTapped(_ sender: UIButton) {
        activeField!.text = activeField!.text! + (sender.titleLabel?.text!)!
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...