0

我使用类似于 android toast 的东西向用户发送消息。

此 toast 显示在当前视图中,在这种情况下我想更改视图,并且没有时间阅读消息。

所以,我用一个线程在当前视图中停留了 3 秒,但是 toast 也被延迟了。

[theHoleView makeToast:@"OK!!" duration:3 position:@"center" image:[UIImage imageNamed:@"nocorrect.png"]];
[NSThread sleepForTimeInterval:3];
[self.navigationController popToRootViewControllerAnimated:YES];

我在 Toast 之后执行 NSThread,为什么 toast 延迟了?

先感谢您

4

1 回答 1

1

这是因为你还没有回到绘制屏幕的主循环。您可以使用 刷新图形上下文[CATransaction flush],即

[theHoleView makeToast:@"OK!!" duration:3 position:@"center" image:[UIImage imageNamed:@"nocorrect.png"]];
[CATransaction flush];
[NSThread sleepForTimeInterval:3];
[self.navigationController popToRootViewControllerAnimated:YES];

您可能需要添加 Quartz 框架才能使其正常工作,确保将框架添加到目标并将标头导入 ViewController.m 文件中。IE:

#import <QuartzCore/QuartzCore.h>
于 2012-09-17T10:48:29.607 回答