MBProgressHUD显示与键盘显示冲突的问题

上午,在登录界面做“正在登录…”的hud显示,由于window问题,一直很难成功,通过查找各种原因,终于在上午解决掉。

问题描述,想要在登录控制器中,当点击登录按钮之后,出现“正在登录…”的hud显示,起初,hud无法显示,通过排查,发现,hud是会显示的,只不过经过很短的时间就消失掉了,导致以为是无法显示。

其实这个问题和昨天自动登录时遇到的那个无法显示的问题如出一辙,从直觉上感觉,应该也是window在兴风作浪,但是,window导致的消息却没有办法排查。

通过测试发现,当键盘在收起的状态下,点击登录,hud是会出现并且不会消失。所以,出错基本就是由于键盘的收起导致的。因为当时使用的hud是显示在一个window上的,而键盘的弹出也是显示在window上,所以导致出现这个问题。

但是,我在点击登录之后,先让其收起键盘,然后在弹出hud,仍然会消失。感觉应该是两个执行顺序之间存在偏差导致的。

到现在为止,基本可以断定是由于window导致的显示不正常。所以,我准备在window上做相应的修改来解决这个问题。

起初,我准备监听键盘的收起事件,在收起之后再显示hud。但是,想在window上解决这个问题简直太太太麻烦。所以,我想能不能直接把hud显示在当前的view上,而不是显示在window上。带着这个方案,我准备进行下一步的工作。

刚开始,我是准备自己写一个类似 MBProgressHUD的alerted显示,然后,我就研究MBProgressHUD的源码,在这个过程中,发现,hud是有两个初始化方法,initwithwindow和initwithview,也就是说,可以直接在view上创建hud。这样,就不用我自己来写了,MBProgressHUD确实很全。

通过直接在view上创建hud就完美的解决了window的冲突问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,255评论 25 709
  • 风在追求叶子,承诺要带着叶子去看外面的精彩世界。 叶子犹豫不决,征求树的意见 树说:你若不离,我便不弃 终有一天,...
    凉笙佳人阅读 414评论 0 0
  • 作为一名高龄产妇却有一颗辣妈的心,因此努力恢复棒棒哒的身形,可以尽快穿上美美的衣服就一直萦绕在心间。 我虽然活泼开...
    zzVicky阅读 830评论 5 5