iphone - MBProgressHUD 在完成前消失

标签 iphone objective-c ios mbprogresshud

我的应用程序中的 MBProgressHUD 有一个小问题。

基本上,我正在以我能找到的最简单的方式使用它:

[MBProgressHUD showHUDAddedTo:self.view animated:YES];
[self performSelector:@selector(save) withObject:nil afterDelay:0.001];
[self refreshView];

refreshView 方法在执行结束时有这一行:

[MBProgressHUD hideHUDForView:self.view animated:YES];

MBProgress 完全按照它应该的方式显示,但在其持续时间的后半段(大约)逐渐淡化到几乎不可见的状态,使其看起来好像方法在实际完成之前就已完成执行。

对这里可能出现的问题有什么想法吗?

非常感谢!

最佳答案

您需要了解的概念是运行循环。运行循环是程序中处理传入事件、计时器、网络等的内部循环(它由系统提供并运行,因此您实际上不会在代码中看到此循环。)

用这一行:

[self performSelector:@selector(save) withObject:nil afterDelay:0.001];

您安排 -save 操作在 1 毫秒后运行。 (或稍后,如果主线程正忙于做其他事情)

安排这个-save之后(所以不是在运行之后)你调用你的refreshView隐藏抬头显示器。

所以实际发生的是一次显示和隐藏 HUD。所以你会看到类似显示和隐藏它的组合动画。独立地调用您的 -save 方法。

与 UIAdam 的建议相反,您确实需要 performSelector:afterDelay:,因为您需要给运行循环一些时间来呼吸并在屏幕上显示您的眼睛糖果。用户界面的更改不会立即发生,只会在程序返回运行循环时发生。

因此,解决方法是采用这条线:

[self refreshView];

并将其移动到您的-save 方法的末尾。

关于iphone - MBProgressHUD 在完成前消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9073186/

相关文章:

ios - 转到新的 UIViewController 时如何从层次结构中删除 UIViewController?

iphone - 日历中的EKEvent如何设置不闹钟

ios - 动态更改服务器上的 .ipa 文件

ios - 如何根据用户操作更改 iOS 7 中 UIView (UITextView) 的大小

Objective-C 奇怪的 EXC_BAD_ACCESS

ios - 无法在我的 UICollectionView 的 cellForItemAtIndexPath 中获得正确的类型

ios - 从其他 VC 调用函数

ios - 使用 XCUIElementQuery 查询 tableHeaderView 中的按钮未找到

ios - 重新排序表行 SQLite UITableView

iphone - 是否有用于在 iPhone 上执行 FFT 的开源库?