首页 > 解决方案 > 在 webview SwiftUI 中获取捕获图像问题

问题描述

我试图在 webview swiftui 中捕获图像后获取图像,但应用程序在捕获图像后重定向到主屏幕。同样的事情在 Android webview 应用程序中运行良好(这意味着网站方面没有问题)。这是 webview 结构

struct MainView: View {

let websiteURL = "https://qatifsales.com/"
let websiteView = Webview()

var body: some View {
    ZStack{
        
        Color.white
        VStack(spacing: 0){
            self.websiteView
            
            HStack{
                
                Button(action:{
                    // go to back
                    self.websiteView.webview.goBack()
                }) {
                    
                    VStack{
                        Image(systemName: "arrow.backward").resizable().frame(width: 20, height: 20).foregroundColor(.init(UIColor.init(red: 0/255, green: 165/255, blue: 145/225, alpha: 1.0)))
                    }.offset(y: 5)
                    
                    
                }
                Spacer()
                Button(action:{
                    self.websiteView.loadRequest(request: URLRequest(url: URL(string: websiteURL)!))
                }) {
                    VStack{
                        Image(systemName: "homekit").resizable().frame(width: 20, height: 20).foregroundColor(.init(UIColor.init(red: 0/255, green: 165/255, blue: 145/225, alpha: 1.0)))
                    }.offset(y: 5)
                    
                    
                }
                
            }.frame(height: 50).background(Color.white).padding([.leading,.trailing]).onAppear{
                self.loadURL()
            }
        }.background(Color.white)
        .navigationTitle("")
        .navigationBarHidden(true).navigationViewStyle(StackNavigationViewStyle())
    }
}
func loadURL() {
    self.websiteView.loadRequest(request: URLRequest(url: URL(string: websiteURL)!))
}
}


struct Webview : UIViewRepresentable {

@State var request: URLRequest?

let webview = WKWebView()

func makeUIView(context: Context) -> WKWebView  {
    return webview
}

func updateUIView(_ uiView: WKWebView, context: Context) {
    if request != nil { uiView.load(request!) }
}

func loadRequest(request: URLRequest) {
    self.request = request
    webview.load(request)
    webview.allowsBackForwardNavigationGestures = true
    
}

func goBack(){
    webview.goBack()
    
}

func goForward(){
    webview.goForward()
}
}

这是 info.plist 文件 在此处输入图像描述

日志图像 在此处输入图像描述

标签: iosxcodewebviewswiftuiwebkit

解决方案


推荐阅读