0

didConnect我在蓝牙方法中显示警报视图。由于某种原因,它会触发四次。我正在尝试用绷带包扎它,但效果不太好。基本上,我将警报视图放在它自己的方法中,然后在didConnect. 那时它会发射四次。我正在尝试将其设置为仅触发一次。我试图做的是设置警报视图方法以返回一个TRUE值。然后我这样做:

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

    }

这第一次效果很好,但随后该方法设置TRUE为其余时间。我有一种感觉,如果我FALSE在 if 语句的末尾将它设置为 equal,那么它会触发四次,然后我就会回到我开始的地方。有谁知道如何更改上述代码,使其在尝试触发四次时仅触发一次?

还尝试在 my 中用 this 替换上面的代码didConnect,但它根本没有触发:

[successfulConnection self];

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

3 回答 3

6

如果您从 didConnect 方法调用successfulConnection,我认为这应该有效(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
}
于 2013-06-05T16:13:04.847 回答
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];
  }
}
于 2014-09-10T11:19:54.370 回答
0

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

于 2013-06-05T15:38:17.787 回答