11

私の iOS キーボード アプリには、現在、デフォルトの iOS 8 キーボードの提案バーによく似たテキスト提案バーがあります。ユーザーがテキストフィールドをクリアする何かを行うたびに、提案バーのすべてのテキストをクリアしたいと思います (たとえば、誰かがiMessage または Whatsapp で「送信」を押したとき)。

「送信」を押すのはキーストロークではないため、テキストフィールドがクリアされたときにキーボードから検出する方法があるかどうか疑問に思っていました。

空のテキスト""または改行を検出しようとし"\n"ましたが、これまでのところうまくいきません。

編集:サード パーティの iOS キーボードを介してこれが可能であることはわかっています

送信する前に、提案バーのテキストに注意してください。
送信する前に

「送信」を押した直後。提案バーがクリアされます。
送信を押した後

4

1 に答える 1

11

メッセージで送信ボタンが押されると、サブクラス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: @""];
    }
}
于 2015-07-23T01:43:39.733 に答える