0

我的 SwiftUI 应用程序具有 WebView 列表。

WebView 称为 ItemWebView,它是 WKWebView 对 SwiftUI 视图的改编(提供创建此类视图的教程或答案)。

我尝试了许多可能的解决方案,包括 onTapGesture、onLongPressGesture、simultaneousGesture、on Button 或 WebView 本身,或者 Stack Views 和 Spacers。

那种工作的是

ZStack{
                        ItemWebView(htmlText:html)
                            Text("TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT TEXT").lineLimit(1).opacity(0.1)
                                .simultaneousGesture(
                                LongPressGesture()
                                        .onEnded { _ in
                                            //handle longpress
                                        }
                                )
                                .highPriorityGesture(TapGesture()
                                                        .onEnded { _ in
                                                            
                                                    //handle tap
                                                        })
                        
                        }

它适用于大于下限的不透明度值。我不知道确切的限制,但 0.1 有效,而 0.01 或 0.0 无效,即 WebView 完全可见且 Text 是透明的,但鼠标事件没有以正确的方式触发。

我可以在 iOS 模拟器上测试它。

我的意思是必须检测两种手势,点击和长按,但以前的解决方案只适用于其中一个,或者让用户通过长按选择 WebView 内的文本,尽管 pointerEvents='none' 在HTML。

我想在 WebView 顶部(在 ZStack 中)有一个完全透明的视图,与 WebView 的大小相同,以替换您在上面示例中看到的文本,以检测到两个手势。

4

0 回答 0