Добавить панель инструментов к десятичной клавиатуре с помощью кнопки «Далее» и «Предыдущий» в контроллере предупреждений. - PullRequest
0 голосов
/ 08 мая 2018

У меня есть следующая функция, которая добавляет кнопки «следующий» и «предыдущий», которые будут переключаться между текстовыми полями, чтобы улучшить взаимодействие с пользователем. Однако я не могу реализовать это через текстовые поля, которые находятся внутри контроллера предупреждений. Есть ли решение или я должен придумать другой дизайн для моего приложения?

extension UIViewController {
func addInputAccessoryForTextFields(textFields: [UITextField], dismissable: Bool = true, previousNextable: Bool = false) {
    for (index, textField) in textFields.enumerated() {
        let toolbar: UIToolbar = UIToolbar()
        toolbar.sizeToFit()
        var items = [UIBarButtonItem]()
        if previousNextable {
            let previousButton = UIBarButtonItem(image: UIImage(named: "previous"), style: .plain, target: nil, action: nil)
            previousButton.width = 30
            if textField == textFields.first {
                previousButton.isEnabled = false
            } else {
                previousButton.target = textFields[index - 1]
                previousButton.action = #selector(UITextField.becomeFirstResponder)
            }
            let nextButton = UIBarButtonItem(image: UIImage(named: "next"), style: .plain, target: nil, action: nil)
            nextButton.width = 30
            if textField == textFields.last {
                nextButton.isEnabled = false
            } else {
                nextButton.target = textFields[index + 1]
                nextButton.action = #selector(UITextField.becomeFirstResponder)
            }
            items.append(contentsOf: [previousButton, nextButton])
        }
        let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
        let doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: view, action: #selector(UIView.endEditing))
        items.append(contentsOf: [spacer, doneButton])
        toolbar.setItems(items, animated: false)
        textField.inputAccessoryView = toolbar
    }
}
}

И это мой контроллер оповещений, где я объявляю оповещения и добавляю их:

alertDisplay.addTextField { (textField) in
        textField.placeholder = "Enter Team 1 Score"
        textField.keyboardType = UIKeyboardType.decimalPad

    }
    alertDisplay.addTextField { (textField) in
        textField.placeholder = "Enter Team 2 Score"
        textField.keyboardType = UIKeyboardType.decimalPad
    }

Чтобы вызвать функцию, я должен добавить нужные текстовые поля в массив (что позволит следующему и предыдущему проходить через текстовые поля). Эта функция вызывается в методе viewDidLoad ().

Итак, вопрос в том, как сделать так, чтобы два текстовых поля в предупреждении имели эту пользовательскую панель инструментов для клавиатуры?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...