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语句的末尾将其设置为equalFALSE
,那么它将触发四次,我将立即回到开始的位置。有人知道如何更改上述代码,使其在尝试发射四次时只发射一次吗
还尝试在mydidConnect
中用此代码替换上述代码,但根本没有触发:
[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在if语句的末尾使用code>并再次触发四次。