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

