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动画结束时调用选择器。如果在两者之间启动另一个动画willDismissdidDismiss那么在某些极少数情况下,didDismiss不必调用该动画。

另请注意,如果您尝试在警报完全显示之前将其关闭,则它永远不会正常工作。

于 2013-07-09T00:29:40.760 回答
0

我也遇到了这个问题。对我来说,这与尝试使用 -1 上的按钮索引以编程方式解除它有关。由于其他原因,我们最终走上了一条不同的道路。但是,操作表上有一个取消按钮索引,您可以尝试使用它来调用它。

于 2013-07-08T23:02:28.410 回答
0

我遇到了类似的问题,作为一种解决方法,我们添加了一个选择器方法,该方法在一些延迟后运行,这将触发警报视图的解除。如果我们要求警报在显示后立即关闭,我不确定为什么它不起作用。希望能帮助到你。

于 2013-07-08T23:01:25.337 回答
0

我已经添加了。这解决了我的问题。

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