我正在为 iOS 开发一个自定义键盘,使用 UIInputViewController 我实现了以下方法:textWillChange,textDidChange。
我想知道用户何时更改当前文本字段并移动到另一个文本字段以配置键盘中当前按下的文本字段的自动大写参数。
现在我尝试做这样的事情:
override func textWillChange(textInput: UITextInput) {
if !textInput.isEqual(self.mCurrentTextInput) {
Logger.printLogToConsole(TAG, aMethodName: __FUNCTION__, aMessage: "TextInput has changed!")
KeyboardState.sharedInstance.setAutoCapitalizationFlag()
}
self.mCurrentTextInput = textInput
}
甚至是这样的:
override func textWillChange(textInput: UITextInput) {
if self.mCurrentTextInput == nil {
if let view = textInput.textInputView {
self.mCurrentTextInput = view
KeyboardState.sharedInstance.setAutoCapitalizationFlag()
}
Logger.printLogToConsole(TAG, aMethodName: __FUNCTION__, aMessage: "TextInput has changed!")
} else if self.mCurrentTextInput!.isEqual(textInput) {
Logger.printLogToConsole(TAG, aMethodName: __FUNCTION__, aMessage: "TextInput has changed!")
if let view = textInput.textInputView {
KeyboardState.sharedInstance.setAutoCapitalizationFlag()
self.mCurrentTextInput = view
}
}
}
但是这些选项都不适合我。
更新:您可以注意到我在回调方法中收到的对象不是 UITextField 对象,而是 UITextInput 对象,它实际上是一个协议,而不是文本字段本身。所以我不能添加观察者。我的键盘应用程序不控制用户输入文本的字段。
问题:如何识别用户更改当前文本字段的那一刻?