我的应用程序中有电话提示警报对话框。我在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。