Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 文本字段编辑期间关闭时,弹出框不显示_Macos_Swiftui_Popover - Fatal编程技术网

Macos 文本字段编辑期间关闭时,弹出框不显示

Macos 文本字段编辑期间关闭时,弹出框不显示,macos,swiftui,popover,Macos,Swiftui,Popover,我想在macOS应用程序中使用弹出框编辑对象。但由于某些原因,当弹出框关闭时,弹出框不再显示,同时编辑TextField。(见下文) 有什么想法吗,为什么会这样 代码: 看起来只有一个事件来退出编辑器first responder并关闭上一个popover是不够的,所以切换下一个popover的状态,但不允许新的popover,因为上一个仍然在屏幕上 以下解决方案是可能的(已测试并使用Xcode 11.2) 也可以考虑设计方法,当只有一个POPOFE绑定到不同的子视图的模型(这在我看来更合适)

我想在macOS应用程序中使用弹出框编辑对象。但由于某些原因,当弹出框关闭时,弹出框不再显示,同时编辑
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
    }
}