UITextInputTraits.returnKeyType在键盘扩展名中不起作用?

时间:2018-01-21 21:51:39

标签: ios uikit swift4 custom-keyboard

所以我正在开发iOS键盘扩展,我希望我的返回按钮文本根据returnKeyType进行更改,但是,似乎此API在键盘扩展上无法正常工作。

我有一个托管应用程序和一些UITextField,当我使用内置英文键盘时,它的返回键根据我为UITextField设置的returnKeyType正确更改。

但对于我自己的键盘扩展,我运行调试器,我总是看到

self.textDocumentProxy.returnKeyType = .default

我的逻辑很简单,我有这个函数来改变返回文本

public func changeReturnText() {
    var text: String
    let returnKeyType = self.textDocumentProxy.returnKeyType
    SpeedLog.log("Return Key Type: \(returnKeyType?.rawValue ?? -1)")
    switch returnKeyType ?? .default {
    case .continue:
        text = "繼續"
    case .done:
        text = "完成"
    case .go, .google, .yahoo:
        text = "前往"
    case .search:
        text = "搜尋"
    case .next:
        text = "下一個"
    case .send:
        text = "送出"
    default:
        text = "換行"
    }
    returnKey.text = text
}

然后我把那个功能放在init()

我能够针对此运行调试器,但即使我将UITextField self.textDocumentProxy.returnKeyType设置为.default,而内置英语键盘工作,returnKeyType始终会返回.done正好。

有什么想法吗?非常感激。

1 个答案:

答案 0 :(得分:1)

正如Ben Pious指出的那样,显然我过早地打电话给textDocumentProxy。并注意到textDocumentProxy仅在帧非零后才可用。