IOS关于MBProgressHUD延时之后不消失的BUG

来源:互联网 发布:淘宝怎么关闭返利 编辑:程序博客网 时间:2024/05/17 04:23

最近在遇到一个关于MBProgressHUD框架延时隐藏却不消失的BUG,开始在做延时隐藏的时候,使用dispatch_after做延时,但是有时候会出现在MBProgressHUD出现提示2秒之后并未隐藏,后来我在方法末尾加上[MBProgressHUD hideHUD];这样就可以完成需求,代码如下:

-(void)sendExitWithUserID:(NSString *)mobile{    [[SQLiteManager sharedInstance] deleteUserInfo];    //友盟统计用户退出    [MobClick profileSignOff];    //创建一个文件管理者    AFHTTPRequestOperationManager *mgr = [[AFHTTPRequestOperationManager alloc] init];    NSMutableDictionary *params = [NSMutableDictionary dictionary];    params[@"mobile"] = mobile;    params[@"machineCode"] = MACHINECODE;    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"nearShopOutLogin"];    [mgr POST:url parameters:params success:nil failure:nil];    [[SQLiteManager sharedInstance] deleteUserInfo];    // 拿到偏好设置的对象    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kIsLogin];    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kAutoLoginSwitchKey];    [MBProgressHUD showMessage:@"您的账户在其他手机上登录,请重新登录"];    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        [MBProgressHUD hideHUD];        UIWindow *window = [UIApplication sharedApplication].keyWindow;        UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];        HXTabBarController *tabBarC = [story instantiateInitialViewController];        window.rootViewController = tabBarC;    });    [MBProgressHUD hideHUD];}

可是后来发现如果在方法末尾加上[MBProgressHUD hideHUD];会造成延时的信息消失过快,用户无法看清显示信息,后来优化代码之后,使用[self performSelector:@selector(after) withObject:nil afterDelay:2]的方法解决了这个BUG。

-(void)sendExitWithUserID:(NSString *)mobile{    [[SQLiteManager sharedInstance] deleteUserInfo];    //友盟统计用户退出    [MobClick profileSignOff];    //创建一个文件管理者    AFHTTPRequestOperationManager *mgr = [[AFHTTPRequestOperationManager alloc] init];    NSMutableDictionary *params = [NSMutableDictionary dictionary];    params[@"mobile"] = mobile;    params[@"machineCode"] = MACHINECODE;    NSString *url = [NSString stringWithFormat:@"%@%@", hostURL, @"nearShopOutLogin"];    [mgr POST:url parameters:params success:nil failure:nil];    [[SQLiteManager sharedInstance] deleteUserInfo];    // 拿到偏好设置的对象    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kIsLogin];    [[NSUserDefaults standardUserDefaults] removeObjectForKey:kAutoLoginSwitchKey];    [MBProgressHUD showMessage:@"您的账户在其他手机上登录,请重新登录"];    [self performSelector:@selector(after) withObject:nil afterDelay:2];}- (void)after{    [MBProgressHUD hideHUD];    UIWindow *window = [UIApplication sharedApplication].keyWindow;    UIStoryboard *story = [UIStoryboard storyboardWithName:@"Main" bundle:nil];    HXTabBarController *tabBarC = [story instantiateInitialViewController];    window.rootViewController = tabBarC;}

希望大家多多关注!,谢谢!

0 0
原创粉丝点击