gpt4 book ai didi

Swift:如何将 "acceptsFirstMouse"应用于使用 SwiftUI 构建的应用程序?

转载 作者:行者123 更新时间:2023-12-05 02:58:22 24 4
gpt4 key购买 nike

假设我有一个适用于 MacOS (Catalina) 的应用。

此应用未隐藏。但是另一个应用程序被激活(最前面/最上面)

我想捕捉点击按钮/任何其他 View (我使用的是 swiftUI,所以一切都是 View ) 以防点击我的应用程序。

我该怎么做?


UPD:如何应用“acceptsFirstMouse”来使用 SwiftUI 构建应用程序?

最佳答案

好吧,现在 SwiftUI API 中还没有这样的工具,但是......它不是在沙漠中独立的,Apple 也没有说它是 Cocoa 的替代品,而且他们向我们展示了如何集成它们和两全其美...

所以,这是可能的方法......

import SwiftUI
import Cocoa

// Just mouse accepter
class MyViewView : NSView {
override func acceptsFirstMouse(for event: NSEvent?) -> Bool {
return true
}
}

// Representable wrapper (bridge to SwiftUI)
struct AcceptingFirstMouse : NSViewRepresentable {
func makeNSView(context: NSViewRepresentableContext<AcceptingFirstMouse>) -> MyViewView {
return MyViewView()
}

func updateNSView(_ nsView: MyViewView, context: NSViewRepresentableContext<AcceptingFirstMouse>) {
nsView.setNeedsDisplay(nsView.bounds)
}

typealias NSViewType = MyViewView
}

// Usage (somewhere in your SwiftUI view stack)
...
Text("Click me")
.padding(20)
.background(Color.yellow)
.overlay(AcceptingFirstMouse()) // must be on top (no confuse, it is transparent)
.onTapGesture {
print("Label tapped")
}
...

关于Swift:如何将 "acceptsFirstMouse"应用于使用 SwiftUI 构建的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59130116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com