8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 SwiftUI 中的 NavigationStack 内的 ScrollView 中关闭键盘时出现延迟

Fredrik_Borgstrom 1月前

9 0

在关闭 NavigationStack 中的 ScrollView 中的键盘时,SwiftUI 出现了延迟。当打开键盘然后关闭时,视图在调整大小时似乎会出现延迟

在关闭位于 NavigationStack 中的 ScrollView 中的键盘时,SwiftUI 出现了延迟。打开键盘然后关闭时,视图在调整大小回到原始状态时似乎出现延迟。当内容位于 ScrollView 中或一般位于 NavigationStack 中时,会出现此问题。我使用 NavigationStack 是因为我需要这种类型的导航,并且不使用 navigationTitle 和工具栏。

Gif with behavior

我使用的是 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 中遇到过键盘交互问题吗?有什么建议可以平滑调整大小行为或防止这种延迟吗?

帖子版权声明 1、本帖标题:在 SwiftUI 中的 NavigationStack 内的 ScrollView 中关闭键盘时出现延迟
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Fredrik_Borgstrom在本站《ios》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: