iOSで、システムがUIWebViewにテキスト選択コントロールを表示しようとしているときに呼び出されるコードを記述する方法はありますか?
ユーザーが何かを選択したいときに、可能であれば選択が実際にページに追加される前に、コードの一部を呼び出す必要があります。
iOSで、システムがUIWebViewにテキスト選択コントロールを表示しようとしているときに呼び出されるコードを記述する方法はありますか?
ユーザーが何かを選択したいときに、可能であれば選択が実際にページに追加される前に、コードの一部を呼び出す必要があります。
遅延メソッド呼び出しを使用してこれを回避する方法を見つけました。選択コントロールはすぐには表示されませんが、テキストを約0.5秒間タップアンドホールドした後にのみ表示されます。
これは、私がそれを行うために使用したコードの大まかな概要です。
//in the view controller header declare a boolean
BOOL _confirmUserIsSelectingText;
//in onTouchBegan
_confirmUserIsSelectingText = YES;
[self performSelector:@selector(textSelectionWillAppear:) withObject:nil afterDelay:0.3f];
//in onTouchMoved
_confirmUserIsSelectingText = NO;
//in onTouchEnded
_confirmUserIsSelectingText = NO;
//then define textSelectionWillAppear:
- (void)textSelectionWillAppear:(id)ignoreMe
{
//do whatever it is you need to happen before the selection controls appear
}
最善の解決策ではありませんが、私の状況では機能します。textSelectionWillAppear:の実行にさらに時間が必要な場合は、遅延を微調整できますが、遅延が0.5fに近づきすぎないようにする必要があります。そうしないと、選択ボックスが表示される前にメソッドが実際に呼び出されない可能性があります。