【问题标题】:Context menu does not show over a SpriteView in SwiftUI在 SwiftUI 中,上下文菜单不会显示在 SpriteView 上
【发布时间】:2022-08-17 19:45:30
【问题描述】:

我无法在 Mac 上的 SwiftUI 中的 SpriteView 上显示上下文菜单。我能够在它上面显示一个上下文菜单 - 右键单击​​蓝色作品,红色没有,见图。

Xcode 13.2,部署 12.2,Swift 5

import SwiftUI
import SpriteView

func MenuItem(_ text: String, _ action: @escaping ()->Void) -> some View {
    Button {
        action()
    } label: {
        Text(text)
    }
}

var scene : SKScene {
    
    let r = SKScene.init(size: CGSize(width: 500, height: 500))

    r.isUserInteractionEnabled = false
    r.scaleMode = .aspectFill
    r.backgroundColor = .red
    
    return r
}

struct ContentView: View {
    var body: some View {
        ZStack {
            SpriteView.init(scene: scene)
                .padding()
                .contextMenu {
                    MenuItem(\"1 Preferences ...\") {
                    }
                }

        }
        .background(Color.blue)
        .contextMenu {
            MenuItem(\"0 Preferences ...\") {
            }
        }
    }
}

    标签: macos swiftui spriteview


    【解决方案1】:

    一种可能的解决方案是在此处添加透明覆盖并附加上下文菜单,例如

    SpriteView.init(scene: scene)
        .padding()
        .overlay(
            Color.clear
                .contentShape(Rectangle())
                .contextMenu {               // << here !!
                    MenuItem("1 Preferences ...") {
                    }
                }
        )
    

    使用 Xcode 13.4 / macOS 12.5 测试

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多