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

macOS 13.0.1中focused(_:equals)失效,替代弃用方法遇问题

macOS 13.0.1下@FocusState结合focused无法获取焦点的解决方案

问题核心是你漏掉了让视图具备可聚焦的基础设置——focusable(true),focused(_:equals:)仅用于绑定焦点状态,不能替代focusable开启视图的可聚焦特性。macOS中的Text视图默认不可聚焦,必须显式声明。

修正后的代码如下:

struct ContentView2: View {
    @FocusState var focus: Focus?
    var body: some View {
        VStack {
            Text(focus?.rawValue ?? "no focus")
            Text("top")
                .padding()
                .focusable(true)
                .focused($focus, equals: .top)
            Text("bottom")
                .padding()
                .focusable(true)
                .focused($focus, equals: .bottom)
        }
    }
}

enum Focus: String {
    case top = "top focus", bottom = "bottom focus"
}

关键说明

  • 给每个需要获取焦点的Text添加.focusable(true),开启视图的可聚焦能力,这是focused(_:equals:)生效的前提。
  • 按下Tab键即可在两个Text间切换焦点,顶部文本会同步显示当前焦点状态,和旧版代码的功能完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:08