Macos 快捷键-更改光标

Macos 快捷键-更改光标,macos,swiftui,Macos,Swiftui,Edit:如@Asperi所述,这是正确的。我需要使用视图/控件,而不是形状 当我将光标悬停在元素上时,我试图将光标更改为指针。 我看了这个,但它对我不起作用 这是我的密码 struct CursorTestView: View { @State private var hover: Bool = false var body: some View { ZStack { RoundedRectangle(cornerRadius

Edit:如@Asperi所述,这是正确的。我需要使用视图/控件,而不是形状

当我将光标悬停在元素上时,我试图将光标更改为指针。 我看了这个,但它对我不起作用

这是我的密码

struct CursorTestView: View {
    @State private var hover: Bool = false
    
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 5)
                .fill(hover ? Color.green : Color.blue)
                .frame(width: 100, height: 50)
                .onHover(perform: { hovering in
                    self.hover = hovering
                    if (hover) {
                        NSCursor.pointingHand.push()
                    } else {
                        NSCursor.pop()
                    }
                })
        }
        .frame(width: 400, height: 400, alignment: .center)
        .background(Color.yellow.opacity(0.2))
    }
}
对我遗漏的东西有什么建议吗


谢谢

我注意到视图渲染了2次,所以请使用主队列

struct CursorTestView: View {
    
    @State private var hover: Bool = false
    
    var body: some View {
        ZStack {
            RoundedRectangle(cornerRadius: 5)
                .fill(hover ? Color.green : Color.blue)
                .frame(width: 100, height: 50)
                .onHover { isHovered in
                    self.hover = isHovered
                    DispatchQueue.main.async { //<-- Here
                        if (self.hover) {
                            NSCursor.pointingHand.push()
                        } else {
                            NSCursor.pop()
                        }
                    }
                }
        }
        .frame(width: 400, height: 400, alignment: .center)
        .background(Color.yellow.opacity(0.2))
    }
}
struct CursorTestView:View{
@状态私有变量悬停:Bool=false
var body:一些观点{
ZStack{
圆角转角(拐角半径:5)
.填充(悬停?颜色。绿色:颜色。蓝色)
.框架(宽:100,高:50)
.onHover{i在
self.hover=isHovered

DispatchQueue.main.async{//引用文章中的解决方案仍然有效。使用Xcode 12.5/macOS 11.3进行测试。可能是因为使用了按钮,它是一个控件。所以尝试使用按钮(可能是自定义样式),而不仅仅是形状/视图。啊-是的,它适用于按钮。我假设它适用于所有类型的视图(主要使用webapp,我想我被宠坏了)。编辑:刚刚意识到RoundedRectangle是一个形状,而不是一个ViewWow-发布到主要作品的形状。棒极了,但奇怪的是它是必需的。哦,所以更新@State变量会导致重新渲染,这就是为什么需要发布它?是的。我认为更新@State会造成问题。