Список WKWebView в SwiftUI — Текст выбирается при длительном нажатии, несмотря на то, что для PointerEvents установлено значение «нет» (проверено на симуляторе iOS — iOS 14.4)

#javascript #ios #swiftui #wkwebview #uiviewrepresentable

Вопрос:

Мой SwiftUI отображает список веб-просмотров.

 List
            {
                ForEach(0..<items.count) { index in
                    
 
                ItemWebView(htmlText:items[index].html) ).simultaneousGesture(
                                LongPressGesture()
                                    .onEnded { _ in
                                  MyLog("long press on item " String(index))
                                    }
                            )
                            .highPriorityGesture(TapGesture()
                                    .onEnded { _ in
                                  MyLog("tap on item " String(index))
                                                    })
                        
                }
 

Как вы можете видеть, жесты нажатия и длительного нажатия предназначены для обнаружения.

WebView-это представление, называемое ItemWebView, которое является адаптацией WKWebView к SwiftUI.

Это можно легко сделать в соответствии с ответами StackOverflow и другими учебными пособиями в Интернете.

Такое представление правильно обрабатывает навигацию, и все методы вызываются должным образом.

После загрузки HTML, когда навигация завершена, вводится некоторый код Javascript, и он правильно выполняется.

Часть этого кода выглядит примерно так:

 var children=document.body.children;
document.body.style.pointerEvents='none';
document.body.style.minHeight='1cm';
var num=children.length;
for (i=0;i<num;i  ) {
var el=children[i];
el.style.pointerEvents='none';
};
window.webkit.messageHandlers.jsHandler.postMessage('onload completed');
 

Приведенный выше код предназначен для предотвращения выбора текста в веб-представлении жестом длительного нажатия

но вместо этого это происходит, так что

при длительном нажатии (проверено на симуляторе iOS — iOS 14.4) появляются маркеры выбора и выбирается текст.

Я не хочу, чтобы это было так.

Что случилось, как решить эту проблему?