gpt4 book ai didi

swift - 如何在 SwiftUI macOS 中创建急救人员

转载 作者:行者123 更新时间:2023-12-03 17:08:47 25 4
gpt4 key购买 nike

我试图让我的textField(NSViewRepresentable包装NSTextField)成为出现时的第一个响应者。我在这个thread中测试了很多答案,但它们要么不工作:

func updateNSView(_ nsView: MyField, context: Context) {
if some_condition {
print(nsViews.becomeFirstResponder()) // returns false
negate_condition()
}
...
}

或者它因日志而崩溃(=== AttributeGraph:通过属性43检测到循环===):

func updateNSView(_ nsViews: MyField, context: Context) {
if some_condition {
Window.thisWindow?.makeFirstResponder(nsViews)
negate_condition()
}
...
}

我想要实现的是:

@State var fieldActive: Bool
body: some View {
MyField(...).onAppear { /*makeFirstResponder if fieldActive == true*/ }
}

有人可以帮我解决这个问题吗?非常感谢!

最佳答案

如果您的 MyFieldNSTextField,则以下内容有效。使用 Xcode 11.4/macOS 10.15.4 进行测试

  func makeNSView(context: Context) -> MyField {
let view = MyField()

// ... other properties set up here

// wait for next cycle, so field be already in window
DispatchQueue.main.async {
view.window?.makeFirstResponder(view)
}
return view
}

关于swift - 如何在 SwiftUI macOS 中创建急救人员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61296931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com