MBProgressHUD和SVProgressHUD各自的缺点及解决方案

简介: MBProgressHUD和SVProgressHUD各自的缺点及解决方案

MBProgressHUD和SVProgressHUD各自都有缺点:

当A页面进入B页面,B页面查询数据时,报错需要弹出toast弹窗,并退出B页面到A页面。一般toast弹窗是现实在keywindow上的,但是kewindow是B页面,而由于自动返回A页面,B页面销毁了,就看不到这个toast弹窗了。使用MBProgressHUD时就会遇到该问题。有的app为了解决这个问题人为延迟推出B页面,这样降低用户的体验流畅度,不完美。另一种采用SVProgressHUD来实现,它是异步时弹窗,显示调用弹窗和实际显示弹窗有一个时间差,正好在B页面调用弹窗,在回到A页面时,弹窗出来,所以能显示出来。我们遇到过一个问题,一个请求后台在十几毫秒内返回,蒙层弹窗还没有出来请求回来了,并且取消弹窗,实际上SVProgressHUD还没有出来,导致后面没有取消处理了,一直在哪里转圈了。

最佳解决方案是创建一个优先级高于当前级别的window显示蒙层和动画。

当然若搞不定最佳的window解决方案,只能规避两者的缺点两个库都是使用当弹toast弹窗时用MBProgressHUD,当弹模态弹窗时用MBProgressHUD。当然的window解决方案也有它的不完美,就是弹出widndow弹窗时,键盘若在显示时可能消失,widndow弹窗消失时,键盘恢复原来位置。如:在输入手机号达到11位,会自动去后台查询该手机号是否存在,当然在查询期间要弹窗widndow透明蒙层,防止在查询手机号时用户修改了手机号,导致数据不一致,并且是程序自动触发,查询成功后页面会出现变化,当然存在手机号出错,用户修改手机号的场景,所以光标还要在手机号输入框,并且激活键盘状态。这时第一就会出现查询期间键盘消失,查询结束键盘恢复的问题。当发送一个请求回来立即发送另一个请求,并且这两个请求都弹出了蒙层,会出现页面闪烁的问题。所以没有绝对的完美,要以满足用户的功能为主,小细节也可以接受。并且MBProgressHUD(实时)和SVProgressHUD(延时)都是加在keywindow上的,无法系统的控制tabbar按钮切换。总之,window解决方案虽然存在影响键盘的小问题,也不失为更完美的解决方案。

目录
相关文章
|
消息中间件 数据安全/隐私保护 RocketMQ
消息队列 MQ产品使用合集之如何自定义时间间隔
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
缓存 小程序 数据库
小程序页面之间(传值)传递数据的方法
小程序页面之间(传值)传递数据的方法
506 63
|
iOS开发
Xcode9之后打开Object Library组件库
Xcode9之后打开Object Library组件库
563 1
|
程序员 UED iOS开发
SVProgressHUD和MBProgressHUD的优缺点与SVProgressHUD震动实现
SVProgressHUD和MBProgressHUD的优缺点与SVProgressHUD震动实现
711 0
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
586 2
|
应用服务中间件
dist文件夹、src文件夹、dest文件夹作用
dist文件夹、src文件夹、dest文件夹作用
1018 0
|
缓存 监控 前端开发
怎样提升 Flutter 应用的性能
【10月更文挑战第4天】
|
开发工具 iOS开发
阿里云本机一键登录集成
阿里云本机一键登录集成
642 0
|
缓存 iOS开发
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
2206 0
iOS小技能:解决TableVIew刷新数据带来的界面跳动问题
|
存储 缓存 监控
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化
【4月更文挑战第30天】本文探讨了Flutter中优化列表滚动性能的策略。建议使用`ListView.builder`以节省内存,避免一次性渲染所有列表项。为防止列表项重建,可使用`UniqueKey`或`ObjectKey`。缓存已渲染项、减少不必要的重绘和异步加载大数据集也是关键。此外,选择轻量级组件,如`StatelessWidget`,并利用Flutter DevTools监控性能以识别和解决瓶颈。持续测试和调整以提升用户体验。
741 0
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化

热门文章

最新文章