Я хочу сделать телефонный звонок, и я использую для этого приведенный ниже код.
- (void)callPhoneNumber:(NSString *)phoneNumber
{
UIWebView * webView2 = [[UIWebView alloc] init];
// Remove non-digits from phone number
phoneNumber = [[phoneNumber componentsSeparatedByCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
// Make a call
NSURL * url = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", phoneNumber]];
[webView2 loadRequest:[NSURLRequest requestWithURL:url]];
[self.view addSubview:webView2];
}
Перед звонком я прошу пользователя выбрать вариант с помощью UIActionSheet
. Когда пользователь выбирает вариант, на основе которого я звоню.
Проблема в том, что приведенный выше код работает нормально, если я не отображаю UIActionSheet
и напрямую звоню. Он выводит предупреждение с запросом подтверждения пользователя для совершения вызова. Но после отображения UIActionSheet
, если я вызываю вышеуказанный метод, он не отображает предупреждение о подтверждении.
Странно то, что после этого, если я остановлю приложение из Xcode, приложение будет помещено в фоновый режим, как и должно быть. Но также я вижу это уведомление о подтверждении на главном экране устройства. Как он отображается на главном экране устройства, а не в приложении?
Кто-нибудь сталкивался с этим раньше? Что может быть причиной?
EDIT: я также попробовал код ниже. Но у него такая же проблема. Всякий раз, когда приведенный выше код веб-просмотра работает, приведенный ниже код также работает. То же самое, когда он не работает.
NSString *phoneNumberURL = [NSString stringWithFormat:@"telprompt:%@", phoneNumber];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumberURL]];
Редактировать: добавлен код для листа действий и делегата.
Сначала я показываю предупреждение. При нажатии кнопки оповещения я отображаю лист действий. И выбрав вариант из листа действий, я звоню.
# pragma mark - ALERT VIEW DELEGATE
- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag == MY_TAG)
{
// Ask to select option
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select Option" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Option1", @"Option2", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];
}
}
#pragma mark - UIActionSheet Methods
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
// If not pressed cancel button.i.e. selected one of the options
if (buttonIndex != actionSheet.cancelButtonIndex)
{
// Place a call
[self callPhoneNumber:@"1234567890"];
}
}
[[UIApplication sharedApplication] openURL:…]
- person vikingosegundo   schedule 08.05.2014