首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不能在我的整个模式视图上使用SwiftUI中的.gesture()?

在SwiftUI中,.gesture()是一个用于添加手势识别的修饰符。然而,它不能直接应用于整个模式视图上的原因是,模式视图是一种特殊的视图类型,它负责管理和布局其子视图。因此,如果我们直接在模式视图上使用.gesture(),手势将无法正确地传递给子视图。

为了解决这个问题,我们可以使用其他方法来添加手势识别。一种常见的方法是使用overlay()修饰符将手势添加到模式视图上方的透明视图上。这样,手势将被正确地传递给子视图,并且不会影响模式视图的布局和功能。

下面是一个示例代码,演示了如何在模式视图上使用手势识别:

代码语言:txt
复制
struct ContentView: View {
    @State private var offset = CGSize.zero
    
    var body: some View {
        ZStack {
            // 模式视图
            RoundedRectangle(cornerRadius: 10)
                .fill(Color.blue)
                .frame(width: 200, height: 200)
                .offset(offset)
                .gesture(
                    DragGesture()
                        .onChanged { value in
                            self.offset = value.translation
                        }
                        .onEnded { _ in
                            self.offset = CGSize.zero
                        }
                )
            
            // 透明视图,用于添加手势
            Color.clear
                .frame(width: 200, height: 200)
                .gesture(
                    DragGesture()
                        .onChanged { value in
                            self.offset = value.translation
                        }
                        .onEnded { _ in
                            self.offset = CGSize.zero
                        }
                )
        }
    }
}

在这个示例中,我们使用ZStack将模式视图和透明视图叠加在一起。模式视图是一个蓝色的圆角矩形,透明视图是一个与模式视图相同大小的透明颜色视图。我们将手势添加到透明视图上,以确保手势能够正确地传递给模式视图。

这样,我们就可以在整个模式视图上使用手势识别,而不会影响其布局和功能。

相关搜索:为什么我的javascript函数不能在整个页面中工作为什么我的ContentView样式只能在整个页面中工作一次?为什么windbg不能在内核模式转储中显示我的用户模式调用堆栈?为什么我不能在SwiftUI的视图结构中接收到观察者类的通知?为什么我不能在我的模式中使用redux来管理状态来打开和关闭?为什么我不能在xamarin上使用XlsIO中的Open()?为什么我的bootstrap 4菜单项不能在垂直菜单中占据整个宽度?为什么使用AVPlayer时我的视频不能在UIView中播放为什么我的字体不能在使用CSS声明的IE11中呈现?为什么我无法在SwiftUI中检测到使用CoreBluetooh的其他蓝牙设备?为什么我的JSON在使用decode时不能在PHP脚本中解码?为什么我不能在angularjs中的双向绑定指令组件中使用相同的名称?我如何才能在不破坏覆盖的合法使用的情况下防止Android中的窃听?为什么file: prefix在我使用spring框架的测试中不能在@ContextConfiguration中工作?为什么我不能在google form中自动填充的查找函数中使用arrayformula?为什么macOS中的SwiftUI多行换行文字可以在预览中使用,而不能在真实应用中使用?当我使用@ManyToOne时,为什么我不能在我的数据库中插入一行?为什么我的对象不能在框架中显示,尽管我在Java中使用JLayeredpane?当我使用react时,为什么我不能在chrome中调试没有括号的部分代码?为什么我不能在我的代码asp.net c#中使用app_code中的代码文件
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券