2016-11-09 4 views
0

В моем приложении есть диалоговое окно оповещения по телефону. Я работаю на устройствах iOS 10.1.1 и iPhone 7. Перед отображением диалогового окна мне нужно отобразить один вид, который скрыт в контроллере, но в iPhone 7 он не отображается, пока я не предпринимаю никаких действий на teleprompt. Ниже приведен код, который отлично работает на других iOS. Ваша помощь будет оценена по достоинству.Перед тем, как показать представление в iOS, отобразится диалоговое окно предупреждения Teleprompt.

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

ответ

1

Это не имеет ничего общего с 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: является устаревшей прошивка 10. Он был заменен openURL:options:completionHandler:. В iOS 10 использование этого нового метода может быть другим способом решения вашей проблемы. См. https://stackoverflow.com/a/39767062/1226963 за хорошее объяснение того, как использовать обе версии openURL: в зависимости от текущей версии iOS устройства.

+0

Спасибо, что моя проблема решена вашей линией переполнения стека. –