如何在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
相关产品推荐
相关产品推荐

