我在蓝牙的didConnect
方法中显示警报视图。出于某种原因,它会发射四次。我正在试图哄它,但效果不太好。基本上,我将警报视图放在自己的方法中,并在didConnect
中调用该方法。那是它发射四次的时候。我试图把它设置为只开一次。我尝试做的是设置警报视图方法以返回TRUE
值。然后我这样做:
if ([successfulConnection self] == FALSE) {
[self successfullConnection];
}
第一次这很好用,但是剩下的时间里方法设置为TRUE
。我觉得如果我在if语句的末尾将其设置为等于FALSE
,那么它将会触发四次,我将会回到我开始的地方。有没有人知道如何更改上面的代码,只有在尝试触发四次时才触发一次?
还尝试在我的didConnect
中替换上面的代码,但它根本没有被解雇:
[successfulConnection self];
if (successfulConnection.visible == YES) {
[successfulConnection dismissWithClickedButtonIndex:0 animated:YES];
}
答案 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)
要知道alertView
是currently
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];
}
}