我有一个普通的 TabView、一个@ObservedObject 和一个正在运行的后台任务,它定期更新@ObservedObject 的@Published 字段。
我注意到,当后台任务更频繁地运行并对@ObservedObject 产生更多更改时,TabView 上的导航选项卡的响应速度会降低——它们会“错过”点击。如果我点击两三下,我通常可以改变视图。背景更新越频繁,点击被“错过”的次数就越多。
所以我想知道 TabView 在重绘时是否以某种方式未能注意到点击,或者类似的东西?
有什么见解吗?
import Foundation
import SwiftUI
struct ContentView2: View {
enum Tabs {
case main
case audio
case preferences
}
@State var tab = Tabs.preferences
@ObservedObject var appState = Globals.appState
var body: some View {
TabView(selection: $tab) {
MainView()
.tabItem {
Image(systemName: "video.fill")
Text("Main")
}.tag(Tabs.main)
AudioControlView()
.tabItem {
Image(systemName: "speaker.fill")
Text("Audio")
}.tag(Tabs.audio)
PreferenceView()
.tabItem {
Image(systemName: "gear")
Text("Prefs")
}.tag(Tabs.preferences)
}
}
}