私の問題は、このボタンの下のアクションが完了したときにのみ画面から消えているアクションシートがあることです。私の問題は、アクションシート内で「保存」をクリックしてから、アクションシートを閉じてから、アラートを表示して、保存が完了するまでユーザーに知らせることです。現在は動作が異なります:最初にアクションシートが表示され、アクションシートの下にメッセージが保存され、最後にアクションシートが表示から削除されます。ユーザーは警告メッセージを表示しません。ボタンの下のアクションが完了する前にアクションシートを閉じる
xcodeより早くactionSheetを却下する方法はありますか?
sheetActionButton下の方法:
- (IBAction)saveAction:(id)sender
{
UIAlertView *alert;
alert = [[[UIAlertView alloc] initWithTitle:@"Saving photo to library\nPlease Wait..." message:nil delegate:self cancelButtonTitle:nil otherButtonTitles: nil] autorelease];
[alert show];
UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
indicator.center = CGPointMake(alert.bounds.size.width/2, alert.bounds.size.height - 50);
[indicator startAnimating];
[alert addSubview:indicator];
[indicator release];
[self saveImageToCameraRoll];
[alert dismissWithClickedButtonIndex:0 animated:YES];
}
私はあなたのアドバイスによって、これを変更しようとしました:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT、0)、^ {[自己saveImageToCameraRoll];}); - >今は完全に違っていますが、まだ間違っています:actionSheetは終了しましたが、dispatch_asyncの終了後に警告が表示されています。私はアクションシートを却下し、警告を表示し、アクションを保存し、アラートを却下します。 Atmはアクションシートを却下し、アクションを保存し、アラートを表示し、コードでも警告を却下します。 – Vive
はい、そうです。 – jtbandes
は、いくつかのチュートリアルに合わせて変更された:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT、0)、^ {; dispatch_async(dispatch_get_main_queue()、完了); [自己saveImageToCameraRoll]})。ここでcompletionはメソッドのパラメータです:completion:(void(^)(void))completionと呼び出し時にNULLを返します。前のコメントで説明した問題はまだ存在します。 – Vive