Как обнаружить из расширения клавиатуры iOS, что текстовое поле очищается с помощью таких действий, как "Отправить" в iMessage?

В моем приложении для клавиатуры iOS у меня в настоящее время есть панель текстовых предложений, очень похожая на панель подсказок клавиатуры IOS 8 по умолчанию. Я хотел бы очистить весь текст на панели предложений всякий раз, когда пользователь делает что-то, что очищает текстовое поле (например, когда кто-то нажимает " Отправить" на iMessage или Whatsapp,).

Поскольку нажатие "Отправить" не является нажатием клавиши, мне было интересно, есть ли способ обнаружить с клавиатуры, когда текстовое поле очищается.

Я попытался обнаружить пустой текст "" или новую строку "\n", но пока это не сработало.

Изменить: Я знаю, что это возможно через стороннюю iOS-клавиатуру, как здесь видно (это от Themeboard)

Перед удалением отправки обратите внимание на текст в панели предложений.
Before hitting send

Сразу после нажатия "отправить". Панель предложений очищена.
After hitting send

Ответ 1

Когда кнопка "Отправить" нажата в "Сообщениях", обратный вызов textDidChange: будет вызван в ваш подкласс UIInputViewController. В этот момент свойства documentContextAfterInput и documentContextBeforeInput вашего свойства UIInputViewController subclass textDocumentProxy будут равно 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: @""];
    }
}