0

android toastに似たものを使用して、ユーザーにメッセージを送信します。

このトーストは現在のビューに表示されています。この場合、ビューを変更したいので、メッセージを読む時間がありません。

そのため、スレッドを使用して現在のビューに3秒間留まりますが、トーストも遅れます。

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

トーストの後にNSThreadを実行しますが、トーストが遅れるのはなぜですか?

前もって感謝します

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 ファイルにヘッダーをインポートします。すなわち:

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