警报视图显示多次而不是一次

Posted

技术标签:

【中文标题】警报视图显示多次而不是一次【英文标题】:The Alert View shows Many time not one time 【发布时间】:2017-05-12 09:59:25 【问题描述】:

我在我的函数中创建 UIAlertView,问题是它在函数运行时显示很多时间,我如何创建一个 if 语句只显示一次,就像 UIAlertView 不再显示一样。在目标-C

- (void)showAlert 

    _myAlertView = nil;
    _myAlertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Call_On_Hold",nil)
                                              message:NSLocalizedString(@"Please_Wait",nil)
                                             delegate:self
                                    cancelButtonTitle:NSLocalizedString(@"Close_call",nil)
                                    otherButtonTitles:nil, nil];
    _myAlertView.tag = myAlertViewsTag;

    [_myAlertView show];


这是我的 UIAlertView 连续出现而不是一次出现的功能。

- (void) trafficTimerRun:(NSTimer*)theTimer

    ++ trafficTimerTicks;

    pjmedia_rtcp_stat stat;

    if (!get_stream_info([call_id intValue], &stat)) 
        return;
    

    LogDebug(TAG_SIP, @"Got %d bytes on stream 0 (previous: %d)", stat.rx.bytes, prev_bytes);

    if (stat.rx.bytes == prev_bytes) 
        if (trafficTimerTicks >= 10) 

            // Steve-note: Here we need to show a pop-up message when the call in on hold when the trafficTimerTicks run.
            [self showAlert];

            LogError(TAG_SIP, @"No traffic received, hanging up");

            // [theTimer invalidate];
            // broken = YES; Steve note: The call shouldnt broke.
            // [self hangup]; Steve note: The call shouldnt hangup.
        
    

先谢谢了。

【问题讨论】:

旁注:UIAlertView 已弃用,请改用UIAlertController 【参考方案1】:

使用布尔值:

bool alertIsShowing = false;

并在您的更新方法中输入如下内容:

if (trafficTicks > 10)
 if (!alertIsShowing)
     alertIsShowing = true;
     [self showAlert];
   

然后当您的警报被解除时,重置您的布尔值:

alertIsShowing = false;

【讨论】:

嗨@Johnny Rockex,我的 UIAlertView 会自动关闭,我试过了,但它不起作用。 您希望它在没有用户交互的情况下自动关闭吗?我们的 alertView 没有在解雇时调用委托方法吗? 抱歉误会,我已经编写了关闭 UIAlertview 的函数,但我希望 Alertview 必须显示一次而不是 100 次。 :( 你也可以使用布尔值,bool hasAlertShown = false;然后当它显示时,将其设置为 true 并检查下一个警报 可能 显示的时间。

以上是关于警报视图显示多次而不是一次的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的应用程序中仅打印一次警报视图?

如何在 iOS 中触发通知时打开警报视图?

如何检查用户之前是不是在 iOS 中查看过推送通知权限警报视图?

每个 dynamodb 表的多个基本云监视警报的 Terraform 模块。定义一次使用多次

将 iOS 推送通知显示为警报弹出窗口而不是横幅样式

从网站呼叫警报视图