2011-01-11 4 views
2

UIAlertViewをポップアップして、本当にURLを開くかどうかをユーザーに尋ねます。彼らが「はい」を選択した場合、私のアプリはすぐにURLを開き、バックグラウンドに送られます。ユーザーが(マルチタスクを使用して)自分のアプリケーションを再開すると、アラートビューは完全に消えず、半透明の状態になります。おそらくマルチタスクで使用されたスクリーンショットは、アラートビューが完全に消え去る前に撮影されたものの、消えてしまった直後です。バックグラウンドを入力するときに、UIAlertViewを完全に却下する時間を買うにはどうすればよいですか?

アラートビューを完全に解除するのに余分な時間をアプリケーションに与える方法を教えてください。私は-applicationDidEnterBackground:で何かをしなければならないか、または同等の通知のためのビューコントローラでリッスンする必要があるようですが、私は最良のアプローチについてはわかりません。

答えて

3

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animatedに電話する必要があります。 iOS 4では、アプリがバックグラウンドに移動すると、アラートビューは自動的に解除されません。

+0

感謝。なぜ私はそれが動作するのか分かりませんが、それはありません。ユーザーがボタンを押しても警告ビューは既に解除されていますが、URLを開く前にこのコードを追加すると、アプリが前面に戻ったときに警告ビューが表示されなくなりました。 –

+0

問題ありません。喜んで助けてください。 –

0

私はこのことを聞いたことがあります。バックグラウンドのスクリーンショットは、バックグラウンドを引き起こしたもののアニメーションの途中で発生します。

アラートの解除とアプリのバックグラウンドの間に少しの時間を挿入するには、[self performSelector: withObject: afterDelay:]を使用します。 withDelayは浮動小数点数で、秒数分を受け取るので、きれいに微調整することができます。

+0

答えをありがとう。私はこれを考えましたが、次のアプリを開くのに少し遅れてもあまりにも多くのことを考え出しました。 –

+0

時間がかかる必要はありません。おそらく秒の分数。つまり、アラート解雇アニメーションは実際にはどれくらいの期間実行されますか? .3おそらく?また、ユーザーは、アプリを切り替えるときにヒップアップのBITに慣れていると思う。決して完全に滑らかではありません。 –

0

ちょうど誰が私のために働いていたコードを探している場合には、ここにある:このため

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 1) { // Ok button 
     // URL to be opened 
     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", [self phoneNumber]]]; 

     [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES]; 
     [[UIApplication sharedApplication] openURL:url]; 
    } 
} 
関連する問題