gpt4 book ai didi

ios - 如何测试用户是否更改了 UITextInput?

转载 作者:行者123 更新时间:2023-11-30 14:19:46 26 4
gpt4 key购买 nike

我正在为 iOS 开发一个自定义键盘,使用 UIInputViewController 我实现了以下方法:textWillChangetextDidChange

我想知道用户何时更改当前文本字段并移动到另一个文本字段,以便配置键盘中当前按下的文本字段的自动大写参数。

现在我尝试做这样的事情:

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 对象,它实际上是一个协议(protocol),而不是文本字段本身。所以我无法向其中添加观察者。我的键盘应用程序不控制用户输入文本的字段。

问题:如何识别用户更改当前文本字段的时刻?

最佳答案

我正在使用 Objective C,因为我此时有可用的代码:-

您可以使用 KVO ,我想您的目标是:-

static void *contextNew = &contextNew;

//Observe change to txtfeild.text:

[self.txtfeild addObserver:self forKeyPath:@"text"
options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld
context:contextNew];


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {

if(context == contextNew) {

NSLog(@"txtfeild new text : %@ - txtfeild Old text: %@",
[change objectForKey:NSKeyValueChangeNewKey],
[change objectForKey:NSKeyValueChangeOldKey]);
}
}

关于ios - 如何测试用户是否更改了 UITextInput?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616626/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com