0

投稿が正しくない場合はご容赦ください...初めての投稿です。

これに似た質問をいくつか見ましたが、同じ問題はありません。IOS 6.1 と Xcode 4.6 を実行しています。問題は、didDismiss が呼び出されず、willDismiss のみが呼び出されることです。私のコードは、ログ出力とともに以下にあります。何か案は?

#import "MenkLabUIAlertTestViewController.h"

@interface MenkLabUIAlertTestViewController ()

@end

@implementation MenkLabUIAlertTestViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.


}
- (IBAction)test:(id)sender {
    UIAlertView *av  = [[UIAlertView alloc] initWithTitle:@"Encrypting File(s)" message:@"Please wait..." delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
    //    UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    [av show];
    [av dismissWithClickedButtonIndex:-1 animated:YES];
}

- (void) alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"willDISMIS");
}

- (void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"didDISMIS");
   }


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

ログ出力:

2013-07-08 17:27:04.055 testUIAlertView[10534:11303] willDISMIS

これは単なるテスト アプリですが、現在のアプリケーションに存在する問題とまったく同じです。

ありがとうございます。これに一日中頭を悩ませています!

4

5 に答える 5

2

これは、表示しているという事実のアーティファクトであり、同じ方法でアラートビューをすぐに閉じると思います-実際のアプリでは実際にこれを行うことはありません。アラート ビューのプロパティを作成し、次のようなテストを実行すると、正常に動作します。

- (IBAction)test:(id)sender {
    self.av  = [[UIAlertView alloc] initWithTitle:@"Encrypting File(s)" message:@"Please wait..." delegate:self cancelButtonTitle:nil otherButtonTitles:nil, nil];
    [self.av show];
    [self performSelector:@selector(dismissAlertView) withObject:nil afterDelay:1];
}


-(void)dismissAlertView {
    [self.av dismissWithClickedButtonIndex:-1 animated:YES];
}

- (void) alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"willDISMIS");
}

- (void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    NSLog(@"didDISMIS");
}
于 2013-07-08T22:51:00.073 に答える
0

私は一度この問題に遭遇しました。私にとって、問題はアニメーション間の衝突によって引き起こされました。didDismissセレクターは、アニメーションの終了時に呼び出されます。willDismissと の間で別のアニメーションが開始された場合didDismiss、まれdidDismissに を呼び出す必要はありません。

また、アラートが完全に表示される前にアラートを閉じようとすると、うまく機能しないことに注意してください。

于 2013-07-09T00:29:40.760 に答える
0

私が追加しました。それは私の問題を解決します。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 1)
     {
     }
}
于 2013-09-16T21:41:35.853 に答える
0

私もこの問題に遭遇しました。私にとっては、-1 のボタン インデックスを使用してプログラムで閉じようとすることに関連していました。結局、他の理由で別の道をたどることになりました。ただし、アクションシートには、呼び出しを試すことができるキャンセル ボタン インデックスがあります。

于 2013-07-08T23:02:28.410 に答える
0

私は同様の問題に直面していました.回避策として、アラートビューの却下をトリガーする遅延後に実行されるセレクタメソッドを追加しました. アラートが表示された直後にアラートを閉じるように要求すると、なぜ機能しないのかわかりません。それが役に立てば幸い。

于 2013-07-08T23:01:25.337 に答える