获取 UITextField 的 returnKeyType 文本

Get returnKeyType text for UITextField

我正在创建自定义 UIToolBar 以作为 inputAccessoryView 添加到 UITextField,我想在此工具栏的右侧添加一个 UIBarButtonItem作为此文本字段的 return 键,此 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 变量或类似的...

有什么办法吗? 我应该走另一条路吗?

没有将 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)