Swiftui 快捷界面,创建浮动按钮和需要可以移动到任何地方,如辅助触摸

Swiftui 快捷界面,创建浮动按钮和需要可以移动到任何地方,如辅助触摸,swiftui,Swiftui,我曾经使用混合应用程序WKWebview Swift 5.1 SwiftUI。 我想创建一个浮动按钮,它可以在WKWebview上的任何位置移动。根据我对您问题的理解,您希望在WKWebview上创建一个浮动按钮,您可以将其拖动到任何位置。 最初,我尝试使用按钮,但与点击手势和拖动手势有冲突。因此,我使用图像来显示图标,并添加了一个点击手势和拖动手势 代码如下: import SwiftUI import WebKit struct FloatingFab : View { var b

我曾经使用混合应用程序WKWebview Swift 5.1 SwiftUI。
我想创建一个浮动按钮,它可以在WKWebview上的任何位置移动。

根据我对您问题的理解,您希望在WKWebview上创建一个浮动按钮,您可以将其拖动到任何位置。 最初,我尝试使用
按钮
,但与
点击手势
拖动手势
有冲突。因此,我使用图像来显示图标,并添加了一个点击手势和拖动手势

代码如下:

import SwiftUI
import WebKit

struct FloatingFab : View {
    var body: some View {
        ZStack {
            WebView(request: URLRequest(url: URL(string: "https://stackoverflow.com/")!))

            FloatingView()
        }
    }
}

struct WebView : UIViewRepresentable {

    let request: URLRequest

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

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

}

struct FloatingView: View {

    @State private var currentPosition: CGSize = .zero
    @State private var newPosition: CGSize = .zero

    var body: some View {

        Image(systemName: "plus.circle.fill")
            .resizable()
            .foregroundColor(.blue)
            .frame(width: 50, height: 50)
            .offset(x: self.currentPosition.width, y: self.currentPosition.height)
            .onTapGesture(perform: {
                debugPrint("Perform you action here")
            })
            .gesture(DragGesture()
                .onChanged { value in
                    self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width,
                                                  height: value.translation.height + self.newPosition.height)
            }
            .onEnded { value in
                self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width,
                                              height: value.translation.height + self.newPosition.height)

                self.newPosition = self.currentPosition
                }
        )
    }
}

根据我对您的问题的理解,您希望WKWebview上有一个浮动按钮,您可以将其拖动到任意位置。 最初,我尝试使用
按钮
,但与
点击手势
拖动手势
有冲突。因此,我使用图像来显示图标,并添加了一个点击手势和拖动手势

代码如下:

import SwiftUI
import WebKit

struct FloatingFab : View {
    var body: some View {
        ZStack {
            WebView(request: URLRequest(url: URL(string: "https://stackoverflow.com/")!))

            FloatingView()
        }
    }
}

struct WebView : UIViewRepresentable {

    let request: URLRequest

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

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

}

struct FloatingView: View {

    @State private var currentPosition: CGSize = .zero
    @State private var newPosition: CGSize = .zero

    var body: some View {

        Image(systemName: "plus.circle.fill")
            .resizable()
            .foregroundColor(.blue)
            .frame(width: 50, height: 50)
            .offset(x: self.currentPosition.width, y: self.currentPosition.height)
            .onTapGesture(perform: {
                debugPrint("Perform you action here")
            })
            .gesture(DragGesture()
                .onChanged { value in
                    self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width,
                                                  height: value.translation.height + self.newPosition.height)
            }
            .onEnded { value in
                self.currentPosition = CGSize(width: value.translation.width + self.newPosition.width,
                                              height: value.translation.height + self.newPosition.height)

                self.newPosition = self.currentPosition
                }
        )
    }
}

这个编码是正确的,非常感谢你,如果你有solution@sambath如果此答案满足您的要求,请选择它作为接受的答案。@user832 FloatingView是一个视图,如何单击图像和回调以注销LoginView并重新加载wkwebview?因为我有Login.swift再登录一次=>FloatingFab。浮动查看图像按钮(回调)=>登录?????在我的代码中有一行
debugPrint(“在此处执行您的操作”)
,将其替换为您所需的功能。此代码正确无误,谢谢您,如果您得到solution@sambath如果这个答案符合你的要求,请选择它作为接受答案。@user832 FloatingView是一个视图,如何单击图像并回调以注销LoginView并重新加载wkwebview?因为我有Login.swift再登录一次=>FloatingFab。浮动查看图像按钮(回调)=>登录?????在我的代码中有一行
debugPrint(“在此处执行您的操作”)
,用您想要的功能替换它。可能提供您正在使用的示例代码更好该代码类似于下面的示例,因为FloatingView是按钮可能提供您正在使用的示例代码更好该代码类似于下面的示例,因为FloatingView是按钮