SwiftUI中如何为图片按钮的键盘快捷键设置发现弹窗标题
SwiftUI 纯图片按钮快捷键弹窗显示标题解决方案
系统唤起的快捷键发现弹窗(按住Cmd键弹出)默认不会读取按钮的accessibility相关属性生成展示标题,仅会从两个位置读取文本:一是Button内置的文本类Label内容,二是keyboardShortcut修饰符的显式displayName参数。
对应两种可直接落地的解决方案如下:
方案1:使用Label搭配iconOnly样式(兼容性最好,支持iOS14+/macOS11+)
直接将Button的Label替换为同时包含图片和文本的Label,再通过labelStyle设置为仅显示图标,界面展示效果和纯图片按钮完全一致,但系统可以读取到Label的文本内容用于快捷键弹窗展示,同时自动完成无障碍标签配置,无需额外添加accessibility属性:
struct ContentView: View { var body: some View { VStack { Button("保存到收藏") { // 点击逻辑 } .keyboardShortcut("a") Button { // 点击逻辑 } label: { Label("保存到收藏", systemImage: "heart.fill") } .keyboardShortcut("s") .labelStyle(.iconOnly) // 仅展示图标,文本隐藏但仍会被系统读取 } } }
方案2:直接指定keyboardShortcut的displayName参数(支持iOS16+/macOS13+)
如果不需要兼容低版本系统,可以直接在keyboardShortcut修饰符中通过displayName参数显式指定弹窗要显示的标题,不需要修改Button的原有结构:
struct ContentView: View { var body: some View { VStack { Button("保存到收藏") { // 点击逻辑 } .keyboardShortcut("a") Button { // 点击逻辑 } label: { Image(systemName: "heart.fill") } .keyboardShortcut("s", displayName: "保存到收藏") // 显式指定快捷键展示标题 } } }
修改后效果演示:
内容的提问来源于stack exchange,提问作者FarouK
相关产品推荐
相关产品推荐

