有没有人知道这是什么原因造成的吗?


struct ContentView: View {
@AppStorage("language") var language: String = "en"
@StateObject private var dataManager = DataManager()
@State private var selectedTab: Tab = .creed
@State private var activeSheet: ActiveSheet?
// 用于播放音效的音频播放器
@State private var audioPlayer: AVAudioPlayer?
var body: some View {
NavigationView {
TabView(selection: $selectedTab) {
FinanceView(transactions: $dataManager.transactions)
.tabItem {
Image(systemName: "dollarsign.circle")
Text(localizedString(for: "Finance"))
}
.tag(Tab.finance)
CreedView(creeds: $dataManager.creeds)
.tabItem {
Image(systemName: "tag")
Text(localizedString(for: "Creed"))
}
.tag(Tab.creed)
CareerView(careers: $dataManager.careers, onEdit: { career in
activeSheet = .editEntry(entryType: .career, career: career)
})
.tabItem {
Image(systemName: "location.north.line")
Text(localizedString(for: "Career"))
}
.tag(Tab.career)
}
.onChange(of: selectedTab, initial: false) { newValue, _ in
// 触发振动反馈
let impactFeedback = UIImpactFeedbackGenerator(style: .medium)
impactFeedback.impactOccurred()
// 播放点击声音
AudioServicesPlaySystemSound(1104) // 1104 是系统点击声音
}
.safeAreaInset(edge: .top) {
Color.clear.frame(height: 100) // 保留顶部的安全区域
}
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Text("SigmaSelf")
.font(.title)
.bold()
.frame(maxWidth: .infinity, alignment: .leading)
}
ToolbarItemGroup(placement: .navigationBarTrailing) {
NavigationLink(destination: LanguageSettingsView()) {
Image(systemName: "globe.europe.africa")
}
Button(action: {
activeSheet = .addEntry(entryType: selectedTab)
}) {
Image(systemName: "plus")
}
}
}
.sheet(item: $activeSheet) { item in
switch item {
case .addEntry(let entryType):
AddEntryView(dataManager: dataManager, selectedTab: $selectedTab, initialEntryType: entryType)
.presentationDetents([.fraction(0.8)])
case .editEntry(let entryType, let career):
AddEntryView(dataManager: dataManager, selectedTab: $selectedTab, initialEntryType: entryType, careerToEdit: career)
.presentationDetents([.fraction(0.8)])
}
}
}
.onDisappear {
dataManager.saveAll()
}
}
func generateHapticFeedback() {
// 播放振动
let generator = UIImpactFeedbackGenerator(style: .medium)
generator.prepare() // 准备反馈生成器
generator.impactOccurred() // 触发振动
// 播放音效
playSoundEffect(named: "clickSound") // 确保你有这个音效文件
}
private func playSoundEffect(named name: String) {
guard let url = Bundle.main.url(forResource: name, withExtension: "mp3") else {
print("音效文件未找到")
return
}
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.play()
} catch {
print("音效播放出错:\(error.localizedDescription)")
}
}
func localizedString(for key: String) -> String {
let zhDict = ["Finance": "财务", "Creed": "信条", "Career": "事业"]
let zhHKDict = ["Finance": "財務", "Creed": "信條", "Career": "事業"]
let enDict = ["Finance": "Finance", "Creed": "Creed", "Career": "Career"]
switch language {
case "zh":
return zhDict[key] ?? key
case "zh-HK":
return zhHKDict[key] ?? key
default:
return enDict[key] ?? key
}
}
}
这是我content视图的代码块