How to detect from iOS keyboard extension that a textfield is cleared via actions like hitting “Send” in iMessage?

爱⌒轻易说出口 提交于 2019-12-20 12:29:09

问题


In my iOS keyboard app, I currently have a text suggestions bar much like the default iOS 8 Keyboard's suggestion bar. I would like to clear all text on the suggestion bar whenever the user does something that clears the text field (for example, when someone hits "Send" on iMessage or Whatsapp,).

As hitting "Send" is not a keystroke, I was wondering if there is way to detect from the keyboard when a textfield is cleared.

I have tried detecting empty text "" or new line "\n", but so far this has not worked.

Edit: I do know that this is possible through 3rd party iOS Keyboard, as seen the case here (this is from Themeboard)

Before hitting send, note the text in the suggestion bar.

Immediately after hitting "send". The suggestion bar is cleared.


回答1:


When the send button is pressed in Messages, the textDidChange: callback will be called on your UIInputViewController subclass. At that point, both the documentContextAfterInput and documentContextBeforeInput properties of your UIInputViewController subclass's textDocumentProxy property will be nil or the empty string. While you don't know why the textfield was cleared, you can probably infer for most cases where this occurs that you should clear your current next word prediction.

- (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: @""];
    }
}


来源:https://stackoverflow.com/questions/31483853/how-to-detect-from-ios-keyboard-extension-that-a-textfield-is-cleared-via-action

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!