iframe
で表示するページが、それを埋めているページと同じドメインであれば、以下のスクリプトを実行すればできると思います。
C#
1var script = @"
2var iframes = document.getElementsByTagName('iframe');
3for(var i = 0; i < iframes.length; i++) {
4 let iframe = iframes[i];
5 iframe.onload = function() {
6 iframe.contentDocument.documentElement.style.webkitTouchCallout='none';
7 }
8}";
9
10mWebView.EvaluateJavascript(script);
異なるドメインなら、サーバー側でどうにかしない限り、ちょっと難しいかもしれません。
ちょっと無理やり感がありますが、ジェスチャーを無効にすることで、iframeでもロングタップ無効にすることができそうです。
C#
1var longPress = new UILongPressGestureRecognizer();
2longPress.ShouldRecognizeSimultaneously = (recognizer, other) =>
3{
4 if (other is UILongPressGestureRecognizer)
5 {
6 other.State = UIGestureRecognizerState.Failed;
7 }
8 return true;
9};
10mWebView.AddGestureRecognizer(longPress);
WKWebview
の構造に依存してしまいますが、ジェスチャーを削除するという書き方でもいいかもしれません。
また、テキストの選択やハイライトを残したければ、_UITextSelectionForceGesture
、_UIWebHighlightLongPressGestureRecognizer
を取り除かないでおくといいようです。
C#
1foreach (var view in mWebView.ScrollView.Subviews)
2{
3 if (view.GestureRecognizers?.Length > 0)
4 {
5 var recognizers = view.GestureRecognizers.Where(recognizer => recognizer is UILongPressGestureRecognizer && recognizer.Class.Name != "_UITextSelectionForceGesture" && recognizer.Class.Name != "_UIWebHighlightLongPressGestureRecognizer");
6
7 foreach (var recognizer in recognizers)
8 {
9 view.RemoveGestureRecognizer(recognizer);
10 }
11 }
12}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/23 11:01
2018/07/23 16:12
2018/07/28 04:13
2018/09/21 06:24