Macos 文本字段编辑期间关闭时,弹出框不显示
我想在macOS应用程序中使用弹出框编辑对象。但由于某些原因,当弹出框关闭时,弹出框不再显示,同时编辑Macos 文本字段编辑期间关闭时,弹出框不显示,macos,swiftui,popover,Macos,Swiftui,Popover,我想在macOS应用程序中使用弹出框编辑对象。但由于某些原因,当弹出框关闭时,弹出框不再显示,同时编辑TextField。(见下文) 有什么想法吗,为什么会这样 代码: 看起来只有一个事件来退出编辑器first responder并关闭上一个popover是不够的,所以切换下一个popover的状态,但不允许新的popover,因为上一个仍然在屏幕上 以下解决方案是可能的(已测试并使用Xcode 11.2) 也可以考虑设计方法,当只有一个POPOFE绑定到不同的子视图的模型(这在我看来更合适)
TextField
。(见下文)
有什么想法吗,为什么会这样
代码:
看起来只有一个事件来退出编辑器first responder并关闭上一个popover是不够的,所以切换下一个popover的状态,但不允许新的popover,因为上一个仍然在屏幕上 以下解决方案是可能的(已测试并使用Xcode 11.2)
也可以考虑设计方法,当只有一个POPOFE绑定到不同的子视图的模型(这在我看来更合适)并且可以由一个状态管理。
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
SubView()
SubView()
SubView()
}.padding()
}
}
struct SubView: View {
@State var showPopover = false
var body: some View {
VStack {
Text("Label")
}.onTapGesture {
self.showPopover = true
}
.popover(isPresented: $showPopover, arrowEdge: .trailing) {
Popover()
}
}
}
struct Popover: View {
@State var test: String = ""
var body: some View {
TextField("Text", text: $test)
}
}
}.onTapGesture {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
self.showPopover = true // delay activating new popover
}
}