Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios `UIAlertView`出现多次_Ios_Objective C_Uialertview - Fatal编程技术网

Ios `UIAlertView`出现多次

Ios `UIAlertView`出现多次,ios,objective-c,uialertview,Ios,Objective C,Uialertview,我在蓝牙的didConnect方法中显示警报视图。出于某种原因,它发射了四次。我正在用绷带包扎,但效果不太好。基本上,我将警报视图放在自己的方法中,并在didConnect中调用该方法。那是它发射四次的时候。我想把它设置成只开火一次。我试图做的是将alert views方法设置为返回TRUE值。然后我会这样做: if ([successfulConnection self] == FALSE) { [self successfullConnection]; } 这在第

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

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

    }
这在第一次使用时效果很好,但是在剩余的时间里,该方法被设置为
TRUE
。我有一种感觉,如果我在if语句的末尾将其设置为equal
FALSE
,那么它将触发四次,我将立即回到开始的位置。有人知道如何更改上述代码,使其在尝试发射四次时只发射一次吗

还尝试在my
didConnect
中用此代码替换上述代码,但根本没有触发:

[successfulConnection self];

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

最简单的方法是在显示UIAlertView时将布尔值设置为true,然后在取消UIAlertView时将其设置为false。然后,无论何时要显示UIAlertView,首先检查它是否已经显示

最简单的方法是在显示UIAlertView时将布尔值设置为true,然后在取消UIAlertView时将其设置为false。然后,无论何时要显示UIAlertView,首先检查它是否已经显示

如果从didConnect方法调用successfulConnection,我认为这应该会起作用(myAlert是alert视图的属性名):


如果从didConnect方法调用successfulConnection,我认为应该可以(myAlert是alert视图的属性名):

以下是您可以根据需要使用的方法: 编辑:完美的方式。。。如果你不想在应用商店上传你的应用 要知道
警报视图
当前是否可见

用法
:仅在必要时显示alertView(警报视图),其他视图已存在

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

Dissmiss
任何您不知道的
警报视图
显示

用法
:取消错过所有alertView,然后显示新的alertView

-(void)dissmissLastAlert
{
  Class UIAlertManager = objc_getClass("_UIAlertManager");
  UIAlertView *topMostAlert = [UIAlertManager performSelector:@selector(topMostAlert)];
  if (topMostAlert) {
    [topMostAlert dismissWithClickedButtonIndex:0 animated:YES];
  }
}
以下是您可以根据需要使用的方法: 编辑:完美的方式。。。如果你不想在应用商店上传你的应用 要知道
警报视图
当前是否可见

用法
:仅在必要时显示alertView(警报视图),其他视图已存在

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

Dissmiss
任何您不知道的
警报视图
显示

用法
:取消错过所有alertView,然后显示新的alertView

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

当按下任何警报视图按钮时,可以将布尔值设置为FALSE。这不管用吗?处理这个问题的一个常见方法是使用类似于“didfish”的ivar。它初始化为“否”,创建并显示警报后,将其设置为“真”,从那时起,如果收到重复消息,就知道已经收到了返回消息。警报视图有一个名为“可见”的属性。只需检查是否返回YES,如果是,请不要再显示另一个。@rdelmar我刚刚尝试过,似乎根本没有显示,但这非常有用。我刚刚用我尝试过的代码更新了我问题的底部。@rdelmar我怎样才能让它不显示另一个呢?我试着用ClickedButtonIndex解除ISMISS,但没有成功。不管怎样,我认为你的答案非常接近于解决它。当按下任何警报视图按钮时,你可以将布尔值设置为FALSE。这不管用吗?处理这个问题的一个常见方法是使用类似于“didfish”的ivar。它初始化为“否”,创建并显示警报后,将其设置为“真”,从那时起,如果收到重复消息,就知道已经收到了返回消息。警报视图有一个名为“可见”的属性。只需检查是否返回YES,如果是,请不要再显示另一个。@rdelmar我刚刚尝试过,似乎根本没有显示,但这非常有用。我刚刚用我尝试过的代码更新了我问题的底部。@rdelmar我怎样才能让它不显示另一个呢?我试着用ClickedButtonIndex解除ISMISS,但没有成功。不管怎样,我认为你的答案非常接近于解决这个问题。我不确定到底该怎么做。我放置了
successfulConnection=TRUE在if语句的末尾,它又发射了四次。我不确定该怎么做。我放置了
successfulConnection=TRUE并再次触发四次。