2011-01-10 9 views
0

私のUIAlertViewsに小さな問題があります。私はそれを見せて、いくつかの仕事をしてから、自動的に却下しようとしています。これは現在使用しているコードです:UIAlertViewが表示されない

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; 
[callingTaxi show]; 
/* Do some tasks */ 
[callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 
[callingTaxi release]; 

ただし、UIAlertViewは半分の方法しか示していません。背景は暗く見えますが、タスクが完了すると、アラートビューがすぐに表示されてから消えます。

このアイデアを解決する方法はありますか?

ベン

+0

私は同じ問題を抱えているので、あなたの解決策を詳しく説明できます。 – Rasman

答えて

3

それはショーを行いますが、あなたは、iOSはそれを完全にレンダリングするための時間がない

[callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 

で、代わりに何かをするユーザーを待つので、それをすぐに却下します。とにかく、これはどのようにdismissWithClickedButtonIndexが使用されるはずです。ここで何を達成しようとしていますか?

編集:UIAlertViewに代理人を割り当て、代理人にAlertViewの内部で何が起こるかを処理させる必要があると思います。

+0

ありがとうございます。私の問題を解決しました:) – Ben

+0

"AlertViewの内部で何が起こるかを代理人が処理する"ということをもっと説明できますか? – Rasman

+0

@Rasman:http://mobile.tutsplus.com/tutorials/iphone/uialertview/をご覧くださいUIAlertViewからボタンのクリックを処理するためにUIAlertViewDelegateを作成する方法 – fresskoma

1

あなたは、それを示して同じ関数内に閉じタイマーでそれを閉じるか、別のイベントへの反応としてはいけません。

0

あなたはalertview

- (void) alertView: (UIAlertView *) alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{ 
// Do stuff 
// Or if you have multiple buttons, you could use a switch 

[callingTaxi release]; 

それとも、自動解放可能性のための方法を作成する必要があります。..

しかし、正しい答えをx3ro与えている、あなたの代わりにプレスにユーザーを待つの方法を自分で呼び出します

1

デリゲートは必要ありません。問題は、実行するタスクがバックグラウンドスレッドで発生する必要があるため、メインスレッドは画面を更新するために残されているということです。あなたはブロックとディスパッチキューを使用するようにコードを更新した場合

、すべてが動作します:

callingTaxi = [[UIAlertView alloc] initWithTitle:@"" message:@"検索中" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil, nil]; 
[callingTaxi show]; 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 
    /* Do some tasks */ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     // this code is back on the main thread, where it's safe to mess with the GUI 
     [callingTaxi dismissWithClickedButtonIndex:0 animated:YES]; 
     [callingTaxi release]; 
    }); 
}); 
0

をuialertviewがで却下されています [callingTaxi dismissWithClickedButtonIndex:0アニメーション:YES];ユーザがそれを読むことができる前に 。

エンドユーザはどれくらい長くそれを読むつもりですか?

関連する問題