在iOS中显示视图之前显示Teleprompt alert对话框



我的应用程序中有电话提示警报对话框。我在iOS 10.1.1和iPhone 7设备上运行。在显示对话框之前,我需要显示一个隐藏在视图控制器中的视图,但在iPhone 7中,它不会显示,直到我在远程提示上采取任何行动。以下是在其他iOS上运行良好的代码。非常感谢您的帮助。

[callView setHidden:NO];
NSString *phoneNumber = [@"telprompt://" stringByAppendingString:msg];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];

这与iPhone 7无关。这与iOS的版本有关。

一个简单的解决方案是延迟对openURL:的调用,让你的代码有机会完成callView的隐藏。

[callView setHidden:NO];
dispatch_async(dispatch_get_main_queue(), ^{
    NSString *phoneNumber = [@"telprompt://" stringByAppendingString:msg];
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
});

您还应该注意到UIApplication openURL:方法在iOS 10中已被弃用。已替换为openURL:options:completionHandler:。在iOS 10中,使用这种新方法可能是解决问题的另一种方式。关于如何根据设备的当前iOS版本使用openURL:的两个版本,请参阅https://stackoverflow.com/a/39767062/1226963。

最新更新