ios - 通过函数使用Gesture时类型 'any View'不能符合 'View'

标签 ios swift swiftui

我正在尝试将我的手势提取到一个函数中,以便在我的一个 Swift 包中使用。我遇到的问题是,当我尝试在我的一个 View 中使用它时,它不再符合 View 。

以下代码会产生此错误:Type 'any View' cannot conform to 'View'

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Placeholder")
        } 
        .gesture(swipeDownGesture())
    }

    func swipeDownGesture() -> any Gesture {
        DragGesture(minimumDistance: 0, coordinateSpace: .local).onEnded({ gesture in
            if gesture.translation.height > 0 {
                // Run some code
            }
        })
    }
}

最佳答案

改用somesome 指示编译器从内部生成和返回的任何内容推断具体类型:

func swipeDownGesture() -> some Gesture {   // << here !!
    DragGesture(minimumDistance: 0, coordinateSpace: .local).onEnded({ gesture in
        if gesture.translation.height > 0 {
            // Run some code
        }
    })
}

关于ios - 通过函数使用Gesture时类型 'any View'不能符合 'View',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73083463/

相关文章:

swift - 如何在 Swift 5 中将 float 格式化为字符串?

ios - 无法使用 siri 读取 plist 数据

ios - 在 iPhone X 中处理导航栏背景渐变

ios - 在 iOS 12 中设置 WKWebView cookie 接受策略

swiftui - 如何访问另一个结构中的变量? swift

ios - 如何在 SwiftUI 中应用大于底层 View 的叠加层

swift - 使用嵌套模型更新 SwiftUI 中的 View

ios - Phonegap Xcode5.1 键盘完成按钮文本是 fertig

ios - Swift,iOS - 单击以显示文本字段时按钮是否向上移动?然后搬回去?

ios - 无法加载 bundle : 'NSBundle in iOS with Swift 中的 NIB