You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在macOS的SwiftUI视图中捕获键盘事件?

在SwiftUI视图内捕获键盘事件

要实现仅当鼠标处于视图框架内时捕获键盘事件(比如检测Option键按下),可以使用SwiftUI的onKeyPress修饰符,以下是正确的实现代码:

var body: some View {
    VStack { // 可替换为任意容器或视图
        myView1
        myView2
        // 添加其他子视图
    }
    .onKeyPress { keyEventInfo in
        // 判断是否按下了Option键
        if keyEventInfo.modifiers.contains(.option) {
            // 这里编写Option键按下后的处理逻辑
            print("Option键已按下,且鼠标在当前视图范围内")
            return .handled // 标记事件已处理,避免继续传递
        }
        return .ignored // 忽略其他未匹配的键盘事件
    }
}

重要说明

  • onKeyPress的触发条件就是鼠标当前位于视图的框架范围内,无需额外判断位置
  • 注意SwiftUI中修饰键的枚举值是.option,而非示例里的.OptionKey;同时要使用modifiers.contains()来检测修饰键,因为modifiers是一个集合类型
  • 返回.handled可以阻止事件向上层视图传递,.ignored则允许事件继续传播

内容的提问来源于stack exchange,提问作者andrewz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:18:28