`UIAlertView`出现多次

时间:2013-06-05 15:33:22

标签: ios objective-c uialertview

我在蓝牙的didConnect方法中显示警报视图。出于某种原因,它会发射四次。我正在试图哄它,但效果不太好。基本上,我将警报视图放在自己的方法中,并在didConnect中调用该方法。那是它发射四次的时候。我试图把它设置为只开一次。我尝试做的是设置警报视图方法以返回TRUE值。然后我这样做:

if ([successfulConnection self] == FALSE) {
        [self successfullConnection];

    }

第一次这很好用,但是剩下的时间里方法设置为TRUE。我觉得如果我在if语句的末尾将其设置为等于FALSE,那么它将会触发四次,我将会回到我开始的地方。有没有人知道如何更改上面的代码,只有在尝试触发四次时才触发一次?

还尝试在我的didConnect中替换上面的代码,但它根本没有被解雇:

[successfulConnection self];

if (successfulConnection.visible == YES) {
[successfulConnection dismissWithClickedButtonIndex:0 animated:YES];
}

3 个答案:

答案 0 :(得分:6)

如果你从didConnect方法调用successConnection,我认为这应该有效(myAlert是警报视图的属性名称):

-(void)successfulConnection {
    if (! self.myAlert) {
        self.myAlert = [[UIAlertView alloc]initWithTitle:@"ttile" message:@"message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles: nil];
        [self.myAlert show];
    }
}

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    self.myAlert = nil;
    //do whatever with the result
}

答案 1 :(得分:0)

最简单的方法是在显示UIAlertView时只有一个设置为true的布尔值,然后在UIAlertView被解除时设置为false。然后,每当您要显示UIAlertView时,首先检查它是否已经显示。

答案 2 :(得分:0)

这些是您可以根据您的要求使用的方法:

编辑:完美的方式......如果您不想在App Store上传您的应用

要知道alertViewcurrently visible or not

Usage:仅在必要时才显示alertView。

-(UIAlertView *)getLastAlertView
{
  Class UIAlertManager = objc_getClass("_UIAlertManager");
  UIAlertView *topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
  return topMostAlert;
}

您不知道的

Dissmiss any alertView present

Usage:解除所有alertView,然后展示新的

-(void)dissmissLastAlert
{
  Class UIAlertManager = objc_getClass("_UIAlertManager");
  UIAlertView *topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
  if (topMostAlert) {
    [topMostAlert dismissWithClickedButtonIndex:0 animated:YES];
  }
}