ios - 如何从 iOS 键盘扩展中检测到通过在 iMessage 中点击 "Send"等操作清除了文本字段?

标签 ios objective-c ios8 ios8-extension ios-keyboard-extension

在我的 iOS 键盘应用程序中,我目前有一个文本建议栏,很像默认的 iOS 8 键盘的建议栏。每当用户执行清除文本字段的操作时(例如,当有人在 iMessage 或 Whatsapp 上点击“发送”时,我想清除建议栏上的所有文本)。

由于点击“发送”不是击键,我想知道是否有办法在清除文本字段时从键盘检测到。

我已经尝试检测空文本 "" 或新行 "\n",但到目前为止这还没有奏效。

编辑:我知道这可以通过第 3 方 iOS 键盘实现,如此处所示(来自 Themeboard)

点击发送之前,请注意建议栏中的文本。
Before hitting send

点击“发送”后立即。建议栏已清除。
After hitting send

最佳答案

当在消息中按下发送按钮时,textDidChange: 回调将在您的 UIInputViewController 子类上调用。此时,UIInputViewController 子类的 textDocumentProxy 属性的 documentContextAfterInputdocumentContextBeforeInput 属性都将为 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 键盘扩展中检测到通过在 iMessage 中点击 "Send"等操作清除了文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483853/

相关文章:

ios - iOS8 在搜索栏中输入文本时出现错误

ios - Swift 中 SKScene 中的社交框架

iPhone App - 内存警告后背景消失

objective-c - UINavigationController 用于 UITabbarController 内部的表格

ios - 获取操作系统名称(例如 iOS)

ios8 - 分享扩展取消和发布按钮

最初显示 IOS pin 注释,然后使用自定义图像

ios - Swift - 从 ContactPickerViewController 获取联系方式

ios - 检查 NSUserDefaults 键是否存在会使应用程序崩溃

ios - Swift - 减慢 "too fast"动画(UIImage 更新) - 也就是 NSTimer 是这里唯一的选择吗?