作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个适用于 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/
我正在尝试让点击通过工作,以便我的应用程序即使在窗口处于非事件状态时也能响应鼠标点击。我有一个 collectionView,其中包含响应鼠标事件的 NSCollectionView 项。我已经尝试对
假设我有一个适用于 MacOS (Catalina) 的应用。 此应用未隐藏。但是另一个应用程序被激活(最前面/最上面) 我想捕捉点击按钮/任何其他 View (我使用的是 swiftUI,所以一切都
当您执行返回 true 的“override func acceptsFirstMouse”时,View 应该作为第一响应者,即使它没有处于焦点,对吗?好吧,这是行不通的。写了一个小演示程序:当你在背
我是一名优秀的程序员,十分优秀!