SwiftUI问题:使用KeyEquivalent的.keyboardShortcut修饰符为何无响应?
问题解答
这两种写法的差异,核心在于默认修饰键的存在以及系统快捷键冲突:
用
.keyboardShortcut(KeyEquivalent.space)时,这个方法重载会默认自动添加Command修饰键,等价于设置了Command+Space快捷键。而这个组合键是macOS系统默认的Spotlight唤起快捷键,会被系统优先拦截,根本传递不到你的按钮,所以看起来代码没效果。而
KeyboardShortcut(" ", modifiers: [])是显式指定了仅普通空格键,不带任何修饰键,既避开了系统默认快捷键的冲突,又符合你原本的预期,因此能正常触发按钮操作。
你也可以用更简洁的枚举写法实现同样效果,明确清空默认修饰键:
.keyboardShortcut(.space, modifiers: [])
这样既用了KeyEquivalent枚举,又显式声明不需要修饰键,同样能让普通空格键触发按钮。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

