手动登陆的时候,登陆成功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];