Получить текст returnKeyType для UITextField - PullRequest
0 голосов
/ 01 октября 2019

Я создаю пользовательский UIToolBar для добавления как inputAccessoryView к UITextField, я бы хотел добавить UIBarButtonItem в правой части этой панели инструментов, чтобы он служил в качестве ключа возврата этого текстового поля, итекст этого barButtonItem должен быть таким же, как клавиатура этого текстового поля.

Мой подход был:

        let buttonDone =  UIBarButtonItem(title: myTextField.returnKeyType, style: .done, target: self, action: #selector(pickerDone)

        let space = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)

        // toolbar
        let toolBar = UIToolbar()
        toolBar.barStyle = .default
        toolBar.items = [space, buttonDone]
        toolBar.sizeToFit()

        // setup input
        myTextField.inputAccessoryView = toolBar

Но при этом я получаю эту ошибку:

Не удается преобразовать значение типа 'UIReturnKeyType?'к ожидаемому типу аргумента 'String?'

Итак, я пытаюсь что-то вроде:

title: myTextField.returnKeyType.text

Но returnKeyType не имеет переменной .text или подобной .. .

Есть ли способ сделать это? Должен ли я пойти другим путем?

1 Ответ

1 голос
/ 01 октября 2019

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

Вот одно решение с использованием расширения. При необходимости добавьте поддержку других значений.

extension UIReturnKeyType {
    var label: String {
        switch self {
        case .default:
            return "Return"
        case .go:
            return "Go"
        case .done:
            return "Done"
        default:
            return "Enter"
        }
    }
}

Затем вы можете использовать это как:

let buttonDone =  UIBarButtonItem(title: myTextField.returnKeyType.label, style: .done, target: self, action: #selector(pickerDone)
...