2013-07-08 2 views
0

Прошу извинить меня, если что-то не опубликовано правильно ... первая публикация.alertView didDismissWithButtonIndex никогда не назывался

Я видел несколько вопросов, подобных этому, но ни с одной проблемой. Я запускаю IOS 6.1 и Xcode 4.6. Проблема в том, что didDismiss никогда не называется, только будетDismiss. Мой код ниже вместе с выходом журнала. Есть идеи? Выход

#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

попытка увольнения с 0 вместо -1 –

+0

Пожалуйста, смотрите мой ответ на http://stackoverflow.com/a/32594226/4018041 –

ответ

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"); 
} 
0

я столкнулся с аналогичной проблемой, в качестве обходного пути мы добавили метод выбора, который проходит после некоторой задержки, которая вместо этого вызовет увольнение предупреждения. Я не уверен, почему это не работает, если мы попросим предупреждение уволить сразу после его показа. Надеюсь, поможет.

+0

, как показано @rdelmar – Anup

0

Я столкнулся с этой проблемой. Для меня это было связано с попыткой программно отбросить его с помощью индекса кнопки на -1. В конце концов мы закончили другой путь по другим причинам. Однако на листе действий, на который вы можете попытаться позвонить, есть индекс кнопки отмены.

0

Я столкнулся с этой проблемой один раз. Для меня проблема была вызвана столкновением анимаций. При завершении анимации вызывается селектор didDismiss. Если начинается другая анимация между willDismiss и didDismiss, то в некоторых редких случаях не нужно вызывать didDismiss.

Также обратите внимание, что он никогда не срабатывает, если вы попытаетесь отклонить предупреждение до того, как оно будет полностью отображено.

0

Я добавил. Это решает мою проблему.

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    if (buttonIndex == 1) 
    { 
    } 
}