请原谅我,如果事情不对,那么......第一次发帖。
我已经看到了一些与此类似的问题,但没有一个问题存在同样的问题。我正在运行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
这只是一个测试应用程序,但是,它与我当前的应用程序中存在完全相同的问题。
先谢谢了。这一整天都在绞尽脑汁!
答案 0 :(得分: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");
}
答案 1 :(得分:0)
我遇到了类似的问题,作为一种解决方法,我们添加了一个选择器方法,该方法在一段延迟后运行,而不会触发警报视图的解雇。如果我们要求警报在显示后立即解雇,我不确定为什么它不起作用。希望它有所帮助。
答案 2 :(得分:0)
我也遇到了这个问题。对我而言,这与尝试以-1的按钮索引以编程方式解除它有关。出于其他原因,我们最终走上了另一条道路。但是,操作表上有一个取消按钮索引,您可以尝试使用它来调用它。
答案 3 :(得分:0)
我遇到过这个问题一次。对我来说,问题是由动画之间的碰撞引起的。动画结束时调用didDismiss
选择器。如果在willDismiss
和didDismiss
之间启动了另一个动画,那么在极少数情况下,不必调用didDismiss
。
另请注意,如果您在完全显示警报之前尝试关闭警报,它将无法正常工作。
答案 4 :(得分:0)
我补充说。这解决了我的问题。
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1)
{
}
}