подтвердите, что пользователь хочет позвонить по номеру телефона после нажатия кнопки

#iphone #ios

#iPhone #iOS

Вопрос:

Я хочу показать всплывающее окно, в котором спрашивается, хочет ли пользователь позвонить по номеру, когда пользователь нажимает на номер.

Как мне это сделать? В настоящее время, когда я нажимаю на номер, он вызывает его автоматически.

Ответ №1:

Вы также можете сделать:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt:0123456789"]];
  

чтобы получить приглашение и вернуться к вашему приложению впоследствии.

Ответ №2:

Создайте UIAlertView с делегатом, установленным в self , и если выбранный buttonindex является buttonIndex кнопки «Да» в оповещении, наберите номер, если нет, не набирайте номер.

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Do you want to call..." delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert setTag:02];
[alert show];
[alert release];

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    if (alertView.tag == 02 amp;amp; buttonIndex != alertView.cancelButtonIndex) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://phonenumber"]];
    }
} 
  

Комментарии:

1. метод setTag действительно не нужен, если вы не используете несколько UIAlertViews, и я бы изменил сообщение, чтобы оно было просто номером телефона, как это делает Apple, когда вы нажимаете номер телефона в UIWebView и используете Cancel и Call для названий кнопок.

2. Это зависит от разработчика, а не от вас.

Ответ №3:

Я думаю, что вы ищете что-то вроде того, что UIWebView автоматически выполняет с телефонными номерами. Появится UIAlertView с запросом, хочет ли пользователь позвонить по этому номеру, прежде чем завершить набор. Для этого сделайте свой класс UIAlertViewDelegate и выполните следующие действия:

 UIAlertView *alert = [[UIAlertView alloc]
                      initWithTitle: nil
                            message: phonenum
                            delegate: self
                            cancelButtonTitle:@"Cancel"
                            otherButtonTitles:@"Call",nil];
[alert show];
[alert release];
  

Кроме того, добавьте следующий метод в тот же класс:

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat: @"tel://%@", phoneNum]]];
    }
}
  

Просмотр оповещений будет возвращаться к этому методу, когда пользователь взаимодействует с ним. buttonIndex == 0 гарантирует, что вы набираете номер только тогда, когда пользователь нажимает кнопку вызова.

Комментарии:

1. Кнопка «Позвонить» здесь появилась как buttonIndex == 1, «Отмена» получила 0. (И строки должны быть локализованы 🙂 Спасибо за это!

Ответ №4:

Вы должны использовать метод UIAlertView. Документация предоставлена по этой ссылке . Я бы посоветовал вам взглянуть на эту документацию, и все говорит само за себя.

Но вам может потребоваться что-то вроде этого.

 UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"Really call?" message:@"Do you want to call this number?" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil] autorelease];
// optional - add more buttons:
[alert addButtonWithTitle:@"Yes"];
[alert show];