如何从 iOS 键盘扩展中检测到通过在 iMessage 中点击 "Send" 等操作清除了文本字段?
How to detect from iOS keyboard extension that a textfield is cleared via actions like hitting "Send" in iMessage?
在我的 iOS 键盘应用程序中,我目前有一个文本建议栏,与默认的 iOS 8 键盘建议栏非常相似。每当用户执行清除文本字段的操作时(例如,当有人在 iMessage 或 Whatsapp 上点击“Send”时,我想清除建议栏上的所有文本)。
由于点击 "Send" 不是击键,我想知道是否有办法在文本字段被清除时从键盘检测到。
我已经尝试检测空文本 ""
或新行 "\n"
,但到目前为止还没有奏效。
编辑: 我知道这可以通过第 3 方 iOS 键盘实现,如此处所示(来自 Themeboard)
点击发送之前,请注意建议栏中的文本。
点击后立即 "send"。建议栏清空
当在消息中按下发送按钮时,textDidChange:
回调将在您的 UIInputViewController
子类上调用。那时,UIInputViewController
子类的 textDocumentProxy
属性 的 documentContextAfterInput
和 documentContextBeforeInput
属性都将为 nil 或空字符串。虽然您不知道为什么文本字段被清除,但对于大多数发生这种情况的情况,您可能可以推断出您应该清除当前的下一个单词预测。
- (void)textDidChange:(id<UITextInput>)textInput
{
if ((!self.textDocumentProxy.documentContextBeforeInput && !self.textDocumentProxy.documentContextAfterInput) || ([self.textDocumentProxy.documentContextBeforeInput isEqualToString:@""] && [self.textDocumentProxy.documentContextAfterInput isEqualToString:@""])){
//Implement code to clear the banner
[self.keyboard.lblBanner setText: @""];
}
}
在我的 iOS 键盘应用程序中,我目前有一个文本建议栏,与默认的 iOS 8 键盘建议栏非常相似。每当用户执行清除文本字段的操作时(例如,当有人在 iMessage 或 Whatsapp 上点击“Send”时,我想清除建议栏上的所有文本)。
由于点击 "Send" 不是击键,我想知道是否有办法在文本字段被清除时从键盘检测到。
我已经尝试检测空文本 ""
或新行 "\n"
,但到目前为止还没有奏效。
编辑: 我知道这可以通过第 3 方 iOS 键盘实现,如此处所示(来自 Themeboard)
点击发送之前,请注意建议栏中的文本。
点击后立即 "send"。建议栏清空
当在消息中按下发送按钮时,textDidChange:
回调将在您的 UIInputViewController
子类上调用。那时,UIInputViewController
子类的 textDocumentProxy
属性 的 documentContextAfterInput
和 documentContextBeforeInput
属性都将为 nil 或空字符串。虽然您不知道为什么文本字段被清除,但对于大多数发生这种情况的情况,您可能可以推断出您应该清除当前的下一个单词预测。
- (void)textDidChange:(id<UITextInput>)textInput
{
if ((!self.textDocumentProxy.documentContextBeforeInput && !self.textDocumentProxy.documentContextAfterInput) || ([self.textDocumentProxy.documentContextBeforeInput isEqualToString:@""] && [self.textDocumentProxy.documentContextAfterInput isEqualToString:@""])){
//Implement code to clear the banner
[self.keyboard.lblBanner setText: @""];
}
}