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

SwiftUI中如何按住Option键切换显示两个菜单项?

SwiftUI实现Finder式Option键切换菜单项

要实现按住Option键时交替显示菜单项的效果,你不能直接同时放置两个按钮,得根据Option键的按压状态动态渲染对应的选项。

具体实现步骤如下:

  1. 利用SwiftUI的环境变量isOptionKeyPressed监听Option键是否被按住
  2. 通过if-else条件判断,根据按键状态切换显示对应的按钮

完整代码示例:

import SwiftUI

struct ContentView: View {
    // 监听Option键的按压状态
    @Environment(\.isOptionKeyPressed) private var isOptionPressed
    
    var body: some View {
        Menu("操作") {
            if isOptionPressed {
                Button("Alternative option") {
                    // 这里写备选操作的逻辑
                }
                .keyboardShortcut(KeyEquivalent("i"), modifiers: [.command, .option])
            } else {
                Button("Regular option") {
                    // 这里写常规操作的逻辑
                }
                .keyboardShortcut(KeyEquivalent("i"), modifiers: [.command])
            }
        }
    }
}

设置完成后,按住Option键打开菜单时会显示"Alternative option",松开Option键则显示"Regular option",完全匹配Finder文件菜单的交互逻辑。

注意:isOptionKeyPressed环境变量仅支持macOS 12及以上版本,若需兼容更低版本,可通过监听NSEvent的按键事件来实现类似逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 10:42:04