SwiftUI隐藏含键盘视图动画卡顿问题
SwiftUI隐藏含键盘视图动画卡顿问题

SwiftUI隐藏含键盘视图动画卡顿问题

在SwiftUI中,使用withAnimation动画关闭视图时,如果视图显示键盘。withAnimation就会出现退出动画向下偏移后消失的情况。

因为键盘收起本身是一个系统动画,withAnimation控制SwiftUI视图动画,实际的显示效果变成:

系统先收起键盘(布局变化) → 视图被迫向下偏移 → 再隐藏视图,看上去就像键盘“卡顿”一样。

Button(action: {
    focus = nil     // 取消键盘聚集
    withAnimation(.easeInOut(duration: 0.3)) { homeVM.isTradeView = false } // 隐藏视图
}, label: {
    Text("Closure")
})

解决方案:使用UIView的键盘隐藏动画。

UIView.animate(withDuration: 0.3) {
    UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
withAnimation(.easeInOut(duration: 0.3)) { homeVM.isTradeView = false } // 隐藏视图

UIKit动画控制键盘收起,两个动画时间一致,可以同步隐藏视图和键盘,避免视图下移后隐藏的情况。

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注