TapGesture 在 Xcode 11.0 Beta 中不起作用

Posted

技术标签:

【中文标题】TapGesture 在 Xcode 11.0 Beta 中不起作用【英文标题】:TapGesture is not working in Xcode 11.0 Beta 【发布时间】:2019-06-13 16:47:27 【问题描述】:

当我在 TapGesture 上查看定义时,尽管 @available(ios 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *) 在 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 新手。

【问题讨论】:

【参考方案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()
                
        
    

【讨论】:

以上是关于TapGesture 在 Xcode 11.0 Beta 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 上的不需要的 UIView(TapGesture 不起作用)

重复 6 次测试 TapGesture(iOS 和 Swift)

更新到 Xcode 11.0 后反应本机崩溃

如何修复 Xcode 版本 11.0 测试版画布崩溃?

Xcode 11.0 模拟器滑动手势不起作用

xcode使用spdlog(1.7)总结