上午,在登录界面做“正在登录…”的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的冲突问题。