Ios MBProgressHUD-2条连续消息重叠
我试图在屏幕上一个接一个地显示2MbprogressHUD消息。我发现第二条消息与第一条消息重叠,而不是连续出现。这就是我想做的: 我有一个注销按钮,点击它会触发这个并调用“saveCartNotification” “saveCartNotification”以5秒的延迟发布MBProgressHUD,然后调用“userLogOut” } userLogOut现在发布另一条MBProgressHUD消息,延迟5秒:Ios MBProgressHUD-2条连续消息重叠,ios,objective-c,mbprogresshud,Ios,Objective C,Mbprogresshud,我试图在屏幕上一个接一个地显示2MbprogressHUD消息。我发现第二条消息与第一条消息重叠,而不是连续出现。这就是我想做的: 我有一个注销按钮,点击它会触发这个并调用“saveCartNotification” “saveCartNotification”以5秒的延迟发布MBProgressHUD,然后调用“userLogOut” } userLogOut现在发布另一条MBProgressHUD消息,延迟5秒: - (void)userLogOut{ self.hud = [[MB
- (void)userLogOut{
self.hud = [[MBProgressHUD alloc] initWithView:self.view];
self.hud.labelText = @"Logging out securely";
self.hud.mode = MBProgressHUDModeIndeterminate;
self.hud.dimBackground = YES;
self.hud.animationType = MBProgressHUDAnimationFade;
[self.view addSubview:self.hud];
[self.hud show:YES];
[self.hud hide:YES afterDelay:5];
}
由于我连续调用这些方法,因此我的预期行为是:
1) 来自“saveCartNotification”的MBProgressHUD消息
2) 上述信息持续5秒钟后消失
3) 来自“userLogOut”的MBProgressHUD消息
4) 上述信息再次持续5秒钟并消失
但实际情况是,这两条消息似乎与“userLogOut”中的MBProgressHUD消息同时出现在屏幕上,与“saveCartNotification”中的MBProgressHUD消息重叠
你能告诉我我遗漏了什么,我需要做什么才能一个接一个地连续收到我的信息
非常感谢你的帮助
谢谢,
Mike通过这个呼叫您的用户注销
[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
您必须这样做,因为您为MBProgressHUD提供了特定的隐藏时间
希望这对您有所帮助,祝您编码愉快。请通过这一点呼叫您的用户注销
[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
您必须这样做,因为您为MBProgressHUD提供了特定的隐藏时间
希望这有帮助,快乐编码。创建两个独立的
mbprogrreshud
实例,或者将注销呼叫更改为
[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
由于您使用相同的
MBProgressHUD
实例顺序调用两个方法,因此第一个警报会立即被userLogout
方法覆盖。创建两个单独的MBProgressHUD
实例或将注销调用更改为
[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
由于您正在顺序调用两个方法&使用相同的
MBProgressHUD
实例,因此第一个警报会立即被userLogout
方法覆盖。问题是您希望消息连续显示相当长的时间(用计算机术语)当这些HUD所代表的两个过程一个接一个地快速发生时
您的saveCartNotification
方法准备用于显示所需文本的HUD的单个实例。然后,紧接着触发userLogOut
方法,该方法将HUD替换为自己的消息
因此,我现在可以想到两种可能性:
MBProgressHUD
上有一个方法称为-(void)showAnimated:(BOOL)animated,同时执行block:(dispatch_block_t)block completionBlock:(mbprogresshudcletionblock)completion
。在第一个块中,您执行保存操作,因为它在后台线程上运行,所以可以在其内部使用一些基于NSThread sleepForTimeInterval:
的延迟将消息保留在屏幕上一段时间。然后在完成块中触发注销。这样可以有效地序列化调用,使两个HUD在屏幕上保留一段时间然而,这取决于你的应用程序中使用该流的频率,对于经验丰富的用户来说,等待第一条消息消失可能会让他们感到恼火。我想,你可能会做得很好,不是每封邮件延迟5秒,而是2秒 问题在于,当这些HUD所代表的两个过程一个接一个地快速发生时,您希望消息连续显示相当长的时间(用计算机术语) 您的
saveCartNotification
方法准备用于显示所需文本的HUD的单个实例。然后,紧接着触发userLogOut
方法,该方法将HUD替换为自己的消息
因此,我现在可以想到两种可能性:
MBProgressHUD
上有一个方法称为-(void)showAnimated:(BOOL)animated,同时执行block:(dispatch_block_t)block completionBlock:(mbprogresshudcletionblock)completion
。在第一个块中,您执行保存操作,因为它在后台线程上运行,所以可以在其内部使用一些基于NSThread sleepForTimeInterval:
的延迟将消息保留在屏幕上一段时间。然后在完成块中触发注销。这样可以有效地序列化调用,使两个HUD在屏幕上保留一段时间然而,这取决于你的应用程序中使用该流的频率,对于经验丰富的用户来说,等待第一条消息消失可能会让他们感到恼火。我想,你可能会做得很好,不是每封邮件延迟5秒,而是2秒 我认为您需要单独的
MBProgressHUD
实例,我认为您需要单独的MBProgressHUD
+1实例作为备选建议。“通知(警报)的5秒钟太长了。”丹尼尔·施内勒-工作得很有魅力。谢谢你的建议+1.其他建议。“通知(警报)的5秒钟太长了。”丹尼尔·施内勒-工作得很有魅力。谢谢你的建议!