ios - SwiftUI-无法将 View 拖到 ScrollView 之外

标签 ios swiftui

这是我的布局的一个非常简化的版本。我有一个可以拖动的 TextView ...

struct DragView: View {
    var text:String

    @State var dragAmt = CGSize.zero

    var body: some View {
        Text(text)
            .padding(15)
            .background(Color.orange)
            .cornerRadius(20)
            .padding(5)
            .frame(width: 150, height: 60, alignment: .leading)
            .offset(dragAmt)
            .gesture(
                DragGesture(coordinateSpace: .global)
                    .onChanged {
                        self.dragAmt = CGSize(width: $0.translation.width, height: $0.translation.height)
                }
                .onEnded {_ in
                    self.dragAmt = CGSize.zero
            })
    }
}

然后我像这样安排这些 View :
struct ContentView: View {
    var body: some View {
        HStack {
            ScrollView {
                VStack {
                    DragView(text: "hi")
                    DragView(text: "hi")
                    DragView(text: "hi")
                }
            }
            Divider()
            VStack {
                DragView(text: "hi")
                DragView(text: "hi")
                DragView(text: "hi")
            }
        }
    }
}

不在 ScrollView 中的 View 按预期运行,我可以将它们拖到整个屏幕上。但是,如果将 ScrollView 中的 View 带到 ScrollView 的边界之外,它们将会消失。

为什么会出现这种情况?有什么办法可以将这些 View 拖到 ScrollView 之外?

最佳答案

Why does this occur?



你拖,你只是看不到它,因为ScrollView剪辑其内容 View 。默认情况下,堆栈不会。如果添加 .clipped()底部 VStack你会看到同样的情况。

Is there any way to enable these views to be dragged outside the ScrollView?



解决方案可能是使用 ZStack。说在拖动时,您在 ScrollView 中隐藏一个 View ,并在同一全局位置显示相同的 ScrollView 外,因此在视觉上它的行为与拖动原始 View 一样。

关于ios - SwiftUI-无法将 View 拖到 ScrollView 之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60440084/

相关文章:

ios - 上下文菜单的 SwiftUI 自定义 View

SwiftUI 导航栏颜色

ios - 访问的背景云台检测(receivedSighting/didArrive/didDepart)?

iOS Swift Navigation 通过重定向展开

c++ - upnpx 库的 Apple Mach-O 链接器错误

ios - InputAccessoryView 内容显示在弹出键盘键上

ios - FileManager.default.removeItem 不删除文件

SwiftUI:导航到 View 而不获取后退按钮

macos - SwiftUI - 更改光标

macos - SwiftUI NavigationSplitView 侧边栏按钮位置