在关闭 NavigationStack 中的 ScrollView 中的键盘时,SwiftUI 出现了延迟。当打开键盘然后关闭时,视图在调整大小时似乎会出现延迟
在关闭位于 NavigationStack 中的 ScrollView 中的键盘时,SwiftUI 出现了延迟。打开键盘然后关闭时,视图在调整大小回到原始状态时似乎出现延迟。当内容位于 ScrollView 中或一般位于 NavigationStack 中时,会出现此问题。我使用 NavigationStack 是因为我需要这种类型的导航,并且不使用 navigationTitle 和工具栏。
我使用的是 iOS 17,键盘交互后内容大小调整感觉不连贯。这是我的代码的简化版本:
VStack {
NavigationStack {
ScrollView {
createAllForm
}
.onAppear {
if #available(iOS 17.0, *) {
Self.addTripOpen.sendDonation()
}
}
.toolbar {
ToolbarItem(placement: .topBarLeading) {
Button(action: {
presentationMode.wrappedValue.dismiss()
}, label: {
Image(systemName: IconsEnum.closeIcon).foregroundColor(.gray)
})
}
}
.toolbar {
ToolbarItem(placement: .topBarTrailing) {
Button(LocalizedText.create, action: {
focusedField = nil
withAnimation {
addTripViewModel.creatingTrip = true
addTripViewModel.addTripToFirebase(presentationMode: presentationMode)
}
}).disabled(addTripViewModel.disableCreate).foregroundColor(Color(addTripViewModel.disableCreate ? ColorsEnum.greyColor : ColorsEnum.tripBlue))
}
}
.navigationTitle(LocalizedText.createTrip)
.navigationBarTitleDisplayMode(.inline)
.isLoadingView(isLoading: addTripViewModel.creatingTrip)
.alert(addTripViewModel.alertMessage, isPresented: $addTripViewModel.showingAlert) {
Button(LocalizedText.acceptLabel, role: .cancel) { }
}
.onDisappear {
if addTripViewModel.isCreated {
processCompletedCount += 1
}
if let currentAppVersion = Bundle.currentAppVersion,
processCompletedCount >= 2,
currentAppVersion != lastVersionPromptedForReview,
addTripViewModel.isCreated {
presentReview()
lastVersionPromptedForReview = currentAppVersion
}
onDismiss(addTripViewModel.isCreated)
}
.sheet(isPresented: $addTripViewModel.showingAddUsers) {
AddUsers().environmentObject(addTripViewModel)
}
}
}
有人在 NavigationStack 中的 ScrollView 中遇到过键盘交互问题吗?有什么建议可以平滑调整大小行为或防止这种延迟吗?