在 SwiftUI 中呈现 sheet 后,交互式 UI 元素的文本颜色变为 systemBlue?

After a sheet is presented in SwiftUI, the text color of interactive UI elements changes to systemBlue?

我有一个 sheet,按下按钮时会显示:

struct Button: View {
    @State isPresented = false
    var body: some View {
        Button(action: { self.isPresented.toggle() },
        label: { Text("Text Label") }
        ).sheet(isPresented: $isPresented, content: { 
            //sheet contents in here
        })
    }
}

下面看到的class本质上是UIKit中的视图(我从函数中删除了一些代码,因为它与问题没有任何关系,但我将函数名称和描述保留在那里,以便您可以解释它在做什么)

class CustomCalloutView: UIView, MGLCalloutView {

lazy var leftAccessoryView = UIView()
lazy var rightAccessoryView = UIView()

weak var delegate: MGLCalloutViewDelegate?

//MARK: Subviews -

let personImg: UIImageView = {
    let img = UIImage(systemName: "person.fill")
    var imgView = UIImageView(image: img)
    //imgView.tintColor = UIColor(ciColor: .black)
    imgView.translatesAutoresizingMaskIntoConstraints = false
    return imgView
}()

let clockImg: UIImageView = {
    let img = UIImage(systemName: "clock")
    var imgView = UIImageView(image: img)
    //imgView.tintColor = UIColor(ciColor: .black)
    imgView.translatesAutoresizingMaskIntoConstraints = false
    return imgView
}()


//Initialization of the view
required init() {
    super.init(frame: CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: UIScreen.main.bounds.width * 0.75, height: 130)))
    setup()
}
//other initializer
required init?(coder decoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}
//essentially just positioning the view
override var center: CGPoint {
        set {
            var newCenter = newValue
            newCenter.y -= bounds.midY
            super.center = newCenter
        }
        get {
            return super.center
        }
    }
//setting it up
func setup() {
    // setup this view's properties
    self.backgroundColor = UIColor.clear
    self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(CustomCalloutView.calloutTapped)))

    // And the subviews
    self.addSubview(personImg)
    self.addSubview(clockImg)

    // Add Constraints to subviews

    //Positioning the clock image
    clockImg.topAnchor.constraint(equalTo: self.separatorLine.bottomAnchor, constant: spacing).isActive = true
    clockImg.leftAnchor.constraint(equalTo: self.leftAnchor, constant: spacing).isActive = true
    clockImg.rightAnchor.constraint(equalTo: self.timeLabel.leftAnchor, constant: -spacing / 2).isActive = true
    clockImg.heightAnchor.constraint(equalToConstant: 20.0).isActive = true

    //Positioning the person image
    personImg.topAnchor.constraint(equalTo: self.timeLabel.bottomAnchor, constant: spacing / 2).isActive = true
    personImg.leftAnchor.constraint(equalTo: self.leftAnchor, constant: spacing).isActive = true
    personImg.rightAnchor.constraint(equalTo: self.peopleLabel.leftAnchor, constant: -spacing / 2).isActive = true
    personImg.heightAnchor.constraint(equalToConstant: 20.0).isActive = true

}



func presentCallout(from rect: CGRect, in view: UIView, constrainedTo constrainedRect: CGRect, animated: Bool) 
//presenting the view

}

func dismissCallout(animated: Bool) {
    //dismissing the view

}

@objc func calloutTapped() {
    //respond to the view being tapped
}

}

当 sheet 出现然后关闭时,它会导致其他 UI 编码在 UIKit 中的元素(例如文本按钮)的文本变成颜色为系统蓝色 UI颜色...知道如何解决这个问题吗?

没有提供足够的代码来测试,但原因可能在

struct Button: View { // << this custom view named as standard Button !!!
    @State isPresented = false

它的命名与标准 SwiftUI 组件相同Button,因此这可能会混淆渲染引擎。

尝试将此名称(以及其他名称,如果你这样做的话)重命名为你的应用程序独有的名称,例如 MyButtonCustomButtonSheetButton