2

@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)尽管我在 TapGesture 上查看定义,但在 MacOS 的 Cocoa 应用程序中使用 SwiftUI 和这个 TapGesture()(或任何其他手势)似乎对我不起作用。

import SwiftUI

struct CircleView : View {
    var body: some View {
        Circle()
            .fill(Color.blue)
            .frame(width: 400, height: 400, alignment: .center)
            .gesture(
                TapGesture()
                    .onEnded { _ in
                        print("View tapped!")
                }
            )
    }
}

#if DEBUG
struct CircleView_Previews : PreviewProvider {
    static var previews: some View {
        CircleView()
    }
}
#endif

构建成功,我正在预览中查看 Circle 并且我打开了控制台,但似乎没有打印任何内容。

难道我做错了什么?这是 10.15 Beta 版的错误吗?除了 SwiftUI 之外,我还需要导入其他框架吗?这里是 Swift 新手。

4

1 回答 1

1

点击工作正常,但是当您预览应用程序时,您不会print在控制台中看到您的语句。实际运行该应用程序,您会看到这些print语句显示在您的控制台中。

或者更改您的应用程序以在 UI 中显示确认点击手势的内容,例如Alert

struct CircleView : View {
    @State var showAlert = false

    var body: some View {
        Circle()
            .fill(Color.blue)
            .tapAction {
                self.showAlert = true
            }
            .presentation($showAlert) {
                Alert(title: Text("View Tapped!"),
                      primaryButton: .default(Text("OK")),
                      secondaryButton: .cancel())
        }
    }
}

或者您可能想要为形状的颜色变化设置动画:

struct CircleView: View {
    @State var isBlue = true

    var body: some View {
        Circle()
            .fill(isBlue ? Color.blue : Color.red)
            .tapAction {
                withAnimation {
                    self.isBlue.toggle()
                }
        }
    }
}
于 2019-06-13T17:48:38.817 回答