macOS Monterey Beta 6下focusedSceneValue失效,添加searchable可修复?
问题复现&解决方案
可以稳定复现该问题,该问题属于macOS Monterey Beta 6版本的SwiftUI专属bug。
问题根因
该版本中SwiftUI的焦点值同步机制存在缺陷:只有当视图树中存在可接收焦点的交互控件时,@FocusedValue 和 focusedSceneValue 对应的全局值同步才会正常触发。你添加的searchable修饰符本质是在视图树中插入了可获取焦点的搜索输入框,间接激活了焦点值同步逻辑,才让原本失效的功能恢复正常。
无需添加searchable的绕过方案
你可以通过以下任意一种方式绕开该Beta版本的缺陷,不需要额外引入搜索功能:
- 给当前视图树的根节点添加
focusable修饰符,主动激活焦点响应能力:
NavigationView { // 原有视图内容 } .focusable(true)
- 插入隐藏的
searchable修饰符,不影响现有交互和视觉效果:
NavigationView { // 原有视图内容 } .searchable(text: .constant("")) .opacity(0) .allowsHitTesting(false)
- 直接升级到macOS Monterey正式版及更高系统版本,该bug在后续系统更新中已经被官方修复。
内容的提问来源于stack exchange,提问作者user16923830
相关产品推荐
相关产品推荐

