gpt4 book ai didi

ios - MBProgressHUD - 2 个连续的消息重叠

转载 作者:行者123 更新时间:2023-11-28 20:22:02 25 4
gpt4 key购买 nike

我试图在屏幕上一个接一个地显示 2 MBProgressHUD 消息。我发现第二条消息与第一条消息重叠,而不是连续出现。这就是我想要做的:

我有一个注销按钮,点击它会触发它并调用“saveCartNotification”

- (IBAction)logout:(id)sender {
[self saveCartNotification];
}

“saveCartNotification”延迟 5 秒发布 MBProgressHUD,然后调用“userLogOut”

- (void)saveCartNotification{
self.hud = [[MBProgressHUD alloc] initWithView:self.view];
self.hud.labelText = @"Saving your cart..";
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];
[self.hud show:YES];
self.hud.labelText = @"Saving Cart and Favorites";
[self.hud hide:YES afterDelay:5];

//Logout
[self userLogOut];

userLogOut 现在发布另一条延迟 5 秒的 MBProgressHUD 消息:

- (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 消息重叠。

能否请您告诉我我缺少什么以及我需要做什么才能一个接一个地连续接收我的消息。

非常感谢您的帮助。

谢谢,迈克

最佳答案

问题是您希望消息连续出现并持续相当长的时间(以计算机术语来说),而这些 HUD 所代表的两个过程却一个接一个地快速发生。

您的 saveCartNotification 方法准备您正在使用的 HUD 的单个实例来显示所需的文本。然后,您立即触发 userLogOut 方法,用自己的消息替换 HUD。

所以我现在能想到的有两种可能:

  1. 由于保存速度非常快,您可以完全摆脱那一步的 HUD。如果您愿意,您可能希望以某种方式调整注销时显示的文本,以通知用户已保存的购物车。
  2. 只有当第一个 HUD 消失时,您才会触发注销。 MBProgressHUD 上有一个名为 - (void)showAnimated:(BOOL)animated whileExecutingBlock:(dispatch_block_t)block completionBlock:(MBProgressHUDCompletionBlock)completion 的方法。在第一个 block 中,您进行了保存,并且可以 - 因为它在后台线程上运行 - 在其中使用一些基于 NSThread sleepForTimeInterval: 的延迟来在屏幕上保留消息一段时间。然后在完成 block 中触发注销。这样您就可以有效地序列化调用,使两个 HUD 都在屏幕上保留一段时间。

但是,根据此流程在您的应用中使用的频率,更有经验的用户可能会很烦不得不等待第一条消息消失。我认为,每条消息的延迟不是 5 秒,而是 2 秒,你可能会做得很好。

关于ios - MBProgressHUD - 2 个连续的消息重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15516689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com