#ios #xcode #webview #swiftui #webkit
Вопрос:
Я пытаюсь получить изображение после его захвата в webview swiftui, но приложение перенаправляется на главный экран после захвата изображения. То же самое прекрасно работает в приложении Android 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()
}
}