SwiftUI聚焦于导航视图内部绑定导致macOS崩溃(Xcode 12.4)
我发现,当macOS中的输入字段接收到焦点时,按照命令中规定的方式使用SwiftUI聚焦于导航视图内部绑定导致macOS崩溃(Xcode 12.4),swift,xcode,macos,swiftui,command,Swift,Xcode,Macos,Swiftui,Command,我发现,当macOS中的输入字段接收到焦点时,按照命令中规定的方式使用@FocusedBindings会导致一致的崩溃。只有当macOS应用程序包装在NavigationView组件中时,才会发生这种情况 一旦发出.focusedValue()的组件接收到聚焦,就会发生此崩溃: [常规]窗口已被标记为需要在窗口过程中进行另一次更新约束,但窗口过程中的更新约束已超过窗口中的视图 如果我使用HStack切换NavigationView,应用程序将按照SDK所描述的那样工作(每个TextEditor都
@FocusedBinding
s会导致一致的崩溃。只有当macOS应用程序包装在NavigationView
组件中时,才会发生这种情况
一旦发出.focusedValue()
的组件接收到聚焦,就会发生此崩溃:
[常规]窗口已被标记为需要在窗口过程中进行另一次更新约束,但窗口过程中的更新约束已超过窗口中的视图
如果我使用HStack切换NavigationView,应用程序将按照SDK所描述的那样工作(每个TextEditor都会发出$post,可以通过命令拾取,只保持聚焦编辑器的值处于活动状态)
有人能提供一些关于如何解决这个问题的智慧吗?我在这里找到SwiftUI macOS的bug了吗
这是我的测试应用程序:
导入快捷界面
@主要
struct TestApp:SwiftUI.App{
var body:一些场景{
窗口组{
ContentView()
}.命令{
AppCommands()
}
}
}
//标记:命令
结构AppCommands:命令{
@CommandsBuilder变量体:一些命令{
命令菜单(“Post”){
CommitPostCommand()
}
}
}
struct commitpost命令:查看{
@FocusedBinding(\.post)变量post
var body:一些观点{
按钮(操作:self.committeeditortext){
文本(“保存帖子”)
}.keyboard快捷方式(KeyEquivalent.return,修饰符:EventModifiers.command)
}
func committeditor text(){
打印(“提交帖子\(帖子??“无”))
}
}
//标记:焦点值定义
结构FocusedPost:FocusedValueKey{
typealias值=绑定
}
扩展焦点值{
var post:FocusedPost.Value{
获取{self[FocusedPost.self]}
集合{self[FocusedPost.self]=newValue}
}
}
//标记:UI组件
结构ContentView:View{
@State var post:String=“Hello World”
var body:一些观点{
NavigationView{//将此切换为HStack可停止崩溃!
文本(“侧栏”)
VStack{
InnerView()
InnerView()
observer视图()
}
}
}
}
结构内部视图:视图{
@State var post:String=“”
var body:一些观点{
文本编辑器(文本:$post)
.focusedValue(\.post,$post)//注释掉它也可以停止崩溃
.padding()
}
}
结构观察者视图:视图{
@FocusedValue(\.post)var post
var body:一些观点{
文本(post?.wrappedValue??“NIL”)
}
}
当FocusedValue位于NavigationView堆栈内时,我会挂起,但没有有用的读数,但设置在其上方时则不会挂起。那没什么用。我永远也做不到:(