UIAlertViewの非同期処理を遅らせる方法
ドハマりしたからメモ〜。
パスワード認証とかで認証がOKだったら次の画面に遷移とかを実装してたんだけど
UIAlertViewのデリゲートは非同期処理だからデリゲート処理が終わる前に次の処理に流れてしまっていたので苦労した。。
デリゲートの処理(ボタンを押した)後に後続の処理を順番通りに流すにアラートのshowを呼び出す部分で下記の実装をする。
[alert show]; alertFinished = NO; //グローバル変数 while (alertFinished == NO) { [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.5f]]; } [alert release];
何かボタンを押したらalertFinishedをYESに設定してあげることでアラート処理を抜けれる。
参考URL
http://teapipin.blog10.fc2.com/blog-entry-224.html
これが出来なくて一日中悩んでいたよ。。