首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在macOS上检测SwiftUI中的键盘事件?

如何在macOS上检测SwiftUI中的键盘事件?
EN

Stack Overflow用户
提问于 2020-04-11 15:44:08
回答 2查看 8.3K关注 0票数 21

如何在macOS的SwiftUI视图中检测键盘事件?

我希望能够使用击键来控制特定屏幕上的项目,但不清楚如何检测键盘事件,这通常是通过覆盖NSView中的keyDown(_ event: NSEvent)来完成的。

EN

Stack Overflow用户

发布于 2020-04-11 18:25:10

到目前为止,还没有内置的原生SwiftUI应用程序接口。

这里只是一个可能的方法的演示。使用Xcode11.4/ macOS 10.15.4测试

代码语言:javascript
复制
struct KeyEventHandling: NSViewRepresentable {
    class KeyView: NSView {
        override var acceptsFirstResponder: Bool { true }
        override func keyDown(with event: NSEvent) {
            print(">> key \(event.charactersIgnoringModifiers ?? "")")
        }
    }

    func makeNSView(context: Context) -> NSView {
        let view = KeyView()
        DispatchQueue.main.async { // wait till next event cycle
            view.window?.makeFirstResponder(view)
        }
        return view
    }

    func updateNSView(_ nsView: NSView, context: Context) {
    }
}

struct TestKeyboardEventHandling: View {
    var body: some View {
        Text("Hello, World!")
            .background(KeyEventHandling())
    }
}

输出:

票数 15
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61153562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档