自动登录 登陆成功那个alert遮盖一直存在bug

手动登陆的时候,登陆成功MBProgressHUD message:@"登陆成功" 
然后再dispatch_after 里调用MBProgressHUD hideHUD隐藏可以成功.
问题来了,写了自动登陆,NSUserDefaults 配置完,然后[self login]登陆,能push下一个控制器,但是登陆成功的遮蔽一直在,不会取消。在【MBProgressHUD hideHUD】方法那里打了断点,依旧。。这是为什么?

登陆成功那个alert一直在

手动登录代码无问题 自动登录 登陆成功后遮盖取消不掉 登录到主页后一直都是菊花界面。。。

如果把隐藏方法放在dispatch外面也没问题。。

第一次运行的时候,打开自动登录开关,showmessage正常显示1秒然后消失。第二次运行的时候,preference存储了自动登录的状态,直接登录,然后问题来了,登录成功跳转到下一个控制器的时候,showmessage并没有消失

 1 // 登录验证 手动连线 login2contac
 2 - (IBAction)loginsClick {
 3     //登录失败 使用官方、自己写的、第三方框架提示用户 不适用弹框警告
 4     if (![self.accounField.text isEqualToString:@"dj"]) {
 5         [MBProgressHUD showError:@"用户名不存在!"];
 6         return;
 7     }
 8     //联网核查账号数据
 9     if (![self.pwdField.text isEqualToString:@"123"]) {
10         [MBProgressHUD showSuccess:@"密码错误!"];
11         return;
12     }
13     // 增加(蒙版)遮盖界面
14     [MBProgressHUD showMessage:@"程序猿正在拼命加载数据..."];
15     // 发送网络请求
16     
17     //模拟联网取数据 延迟1秒 dispatch_after snippet-GCD
18     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
19         //去掉蒙版
20 //        [MBProgressHUD hideHUD];
21         [self performSegueWithIdentifier:@"login2contac" sender:nil];//手动跳转
22         //保存个人偏好设置用于下次自动登录
23         NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
24         [defaults setObject:self.accounField.text forKey:DJAccount];
25         [defaults setObject:self.pwdField.text forKey:DJPwd];
26         [defaults setBool:self.rememberPwd.isOn forKey:DJRementPwd];
27         [defaults setBool:self.automaticPwd.isOn forKey:DJAutoLogin];
28         [defaults synchronize];
29     });
30     //遮盖一直存在只能在这里去掉蒙版
31     [MBProgressHUD hideHUD];
32 }

 解决办法 因为创建窗口时候数组有两个窗口 一个是当前窗口一个是键盘窗口 MJ整合的代码只调用了lastObject即键盘窗口。自动登录跳转窗口应该去掉当前窗口遮盖用数组中第一个就行了

1 if (view == nil) view = [[UIApplication sharedApplication].windows firstObject];
原文地址:https://www.cnblogs.com/zhangdashao/p/4595030.html