WKWebviewを使用するアプリがありますが、リンクのプレビュー動作が必要ないため、allowsLinkPreview
をfalse
に設定します。 iOS 13.4以降、3Dタッチ機能がないデバイス(古いデバイスと新しいiPhoneモデル)では、allowsLinkPreview
をfalsealsoは、ページ内のすべてのテキスト選択を無効にします!私たちのアプリでは、テキストの選択が非常に重要です。
私はこの理論を行の間で読んだ ドキュメント: を思いついた
IOSでは、このプロパティは3D Touchをサポートするデバイスで使用できます。
IOS 13以降を実行しているデバイスでは、デバイスが3Dタッチをサポートしているかどうかに関係なく、タッチアンドホールドジェスチャーを使用してコンテキストメニューを開くことができます。 3D Touchデバイスでは、ジェスチャーによりコンテキストメニューがより迅速に表示されます。
リンクのプレビューを無効にすると、Webviewでallの押し続けるジェスチャーが無効になるバグのようです。
私が思いついた唯一の回避策は、allowsLinkPreview
をtrue
に設定し、次に WKUIDelegate protocol を使用してコンテキストメニューを無効にすることです。これにより、クリックされたリンクのポップアップが無効になりますが、クリックされた画像のポップアップは無効になりません。また、ユーザーがリンクをSafariの分割画面ビューにドラッグアンドドロップすることもできますが、これは望ましくありません。
リンクのプレビュー/コンテキストメニュー/ドラッグドロップ動作を完全に無効にしながら、テキストの選択を許可する方法についての提案は、いただければ幸いです。
[〜#〜]更新[〜#〜]
アプリのコンテンツを制御しているので、次のcssを使用して画像のプレスホールドを無効にすることができました:-webkit-touch-callout: none;
したがって、私の残りの問題は、WKWebView
からのアプリ外へのドラッグ操作を許可しないことです。
UPDATE 2同様に、-webkit-user-drag: none;
リンクのドラッグを無効にしますが、Appleバグのように思われる場合は、css以外の修正を知っておくと役立ちます。
私は同じ問題に遭遇し、これが私がそれを解決した方法です。
wkwebview.UIDelegate = self;
...
- (BOOL)webView:(WKWebView *)webView shouldPreviewElement:(WKPreviewElementInfo *)elementInfo API_AVAILABLE(ios(10.0)) {
return NO;
}