0

iOSキーボード拡張機能を作っています。

しかし、Safari Web でボタンをクリックした後に次のコードを実行すると、proxy( UITextDocumentProxy) が停止しました。

[self.textDocumentProxy adjustTextPositionByCharacterOffset:-5];//stop here
for (int i = 0; i < 10; i ++) {
    [self.textDocumentProxy deleteBackward];
}
[self.textDocumentProxy insertText:@"__________"];

safari-top-search-bar では問題なく動作しますが、他のプレーン テキスト ボックスで停止します。

dispatch_queue_t myQueue = dispatch_queue_create("com.test.online",0);
dispatch_async(myQueue, ^{
    [self.textDocumentProxy adjustTextPositionByCharacterOffset:-5];
    [NSThread sleepForTimeInterval:0.1];
    for (int i = 0; i < 10; i ++) {
        [self.textDocumentProxy deleteBackward];
    }
    [self.textDocumentProxy insertText:@"__________"];
});

ブロックを別のキューの dispatch_async に入れた場合、adjustTextPositionByCharacterOffsetの後に多少の遅延があります。できます

ただし、他のアプリ全体でもコードが遅くなります。

何か良いアイデアはありますか?またはSafariかどうかを検出する方法はありますか?

4

1 に答える 1