【问题标题】:How to Pause Statements Execution and UIalertview Run On separate Loop如何暂停语句执行和 UIalertview 在单独的循环上运行
【发布时间】:2023-12-22 13:22:01
【问题描述】:

您好,我正在开发 Xmpop 聊天应用程序,同时文件传输要求对传入文件接受的权限。对于这个任务我是这样使用的。

UIAlertView *alrt = [[UIAlertView alloc]initWithTitle:@"Incommming File" message:name delegate:self cancelButtonTitle:@"Reject" otherButtonTitles:@"Accept", nil];
    alrt.tag = 1111;
    [alrt show];
    while (buttonClicked == -1)
    {
        NSLog(@"-- runloop");
        [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2]];
    }
    if (buttonClicked == 1)
    {
        NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~YES");
        return YES;
    }
    else
    {
        NSLog(@"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~NO");
        return NO;
    }

此代码在示例应用程序中工作,但在我的聊天应用程序中 UI 阻塞。我该怎么做请帮助我.. 提前致谢。

【问题讨论】:

  • 可以分享例子的链接吗?
  • 你能知道这个while循环是在哪个函数中调用的吗?
  • 以上语句都属于'-(BOOL)incommingFileRequest:(XMPPIQ *)inIq' 方法应该返回我们选择的Bool,(Accept or Reject)
  • 可以分享例子的链接吗?

标签: ios objective-c xmpp uialertview


【解决方案1】:

尝试在异步块中调用[alrt show];

类似这样的:

dispatch_async(dispatch_get_main_queue()) ^{
    [alrt show];
}  

希望这会有所帮助!

【讨论】:

    最近更新 更多