Ios 当父视图具有日期选择器SwiftUI时,不会调用onPreferenceChange

Ios 当父视图具有日期选择器SwiftUI时,不会调用onPreferenceChange,ios,swift,swiftui,Ios,Swift,Swiftui,我有一个父视图,它有两个子视图 当子视图更改首选项值时,父视图通过onPreferenceChange 但是,当父级具有日期选择器时,onPreferenceChange不会被调用并停止工作。 有人找到了解决办法吗 struct parentView: View { @State private var date = Date() var body: some View { VStack{ ChildView1()

我有一个父视图,它有两个子视图

当子视图更改首选项值时,父视图通过
onPreferenceChange
但是,当父级具有日期选择器时,
onPreferenceChange
不会被调用并停止工作。 有人找到了解决办法吗

struct parentView: View {

@State private var date = Date()

var body: some View {
    
    VStack{
        
        ChildView1()
        
        Text("Child View 2")
    
       // DatePicker("", selection: self.$date, displayedComponents: .hourAndMinute)
       

    }
    .onPreferenceChange(testPreference.self, perform: { value in
        print("Printing preference value")
        print(value)
    })
 }
}


struct ChildView1: View {

@State private var tablets : Int = 0

var body: some View {
    Text("Child View 1")
        .onTapGesture {
            self.tablets = self.tablets + 1
        }
        .preference(key: testPreference.self, value: self.tablets)

  }
}


struct testPreference: PreferenceKey {

typealias Value = Int

static var defaultValue: Int = 0

static func reduce(value: inout Int, nextValue: () -> Int) {
    value = nextValue()
  }
}

这一定是一个SwiftUI错误(在12.0.1中复制)。我建议对它进行反馈。到目前为止,我找到的唯一修复方法是将
.onPreferenceChange
VStack
移动到
ChildView1()
。即使把它放在
文本上
也不管用。将日期选择器掩埋在子容器中也不起作用。这感觉就像是指向DatePicker内部的某种黑客行为。非常感谢。你的变通方法似乎奏效了。