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

das*_*ist 11 objective-c ios ios8 ios-keyboard-extension ios8-extension

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

因为点击"发送" 不是击键,我想知道在清除文本字段时是否有从键盘检测的方法.

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

编辑:我知道这可以通过第三方iOS键盘,如这里所见(这是来自Themeboard)

在点击发送之前,请注意建议栏中的文字.
在发送之前

点击"发送"后立即.建议栏已清除.
点击发送后

Ben*_*ous 11

在Messages中按下发送按钮时,textDidChange:将在您的UIInputViewController子类上调用回调.此时,子类的属性documentContextAfterInputdocumentContextBeforeInput属性都将为nil或空字符串.虽然你知道为什么在文本框被清除,你也许可以推断大多数情况下,这种情况发生时,你应该清楚你目前的下一个单词预测.UIInputViewControllertextDocumentProxy

- (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: @""];
    }
}
Run Code Online (Sandbox Code Playgroud)