【问题标题】:Popover does not appear when closed during TextField edit在 TextField 编辑期间关闭时不出现弹出框
【发布时间】:2020-06-22 18:42:57
【问题描述】:

我想在我的 macOS 应用程序中使用弹出框编辑对象。但由于某种原因,弹出框不再出现,当它在编辑TextField 时关闭弹出框。 (见下图)

任何想法,为什么会这样?

代码:

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)
    }
}

【问题讨论】:

    标签: macos swiftui popover


    【解决方案1】:

    看起来一个事件不足以让编辑器第一响应者辞职并关闭前一个弹出框,因此切换了跟随弹出框的状态,但不允许新的弹出框,因为前一个仍在屏幕上。

    以下解决方法是可能的(经过测试并适用于 Xcode 11.2)

    }.onTapGesture {
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
            self.showPopover = true // delay activating new popover
        }
    }
    

    当只有一个弹出框可绑定到不同子视图的模型(在我看来更合适)并且可由一种状态管理时,也可以考虑设计方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多