Как позвонить из приложения на номер телефона - PullRequest
1 голос
/ 25 октября 2011

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

 -(void) BcardDisp: (id)sender
   {
BGView.hidden = NO;
if(BcardView.hidden == YES)
{

BcardView.hidden = NO;

NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
    marker *aMarker = (marker *)[appDelegate.markers objectAtIndex:selectedIndexPath.row];
for (int selectedIndexPath = 0; selectedIndexPath < [appDelegate.markers count]; selectedIndexPath++)
{

ShowroomName.text = aMarker.name;
    Address_Bcard.numberOfLines=3;
    Address_Bcard.text =aMarker.address;

    [p_Bcard setTitle:[NSString stringWithFormat:@"%@",aMarker.phone]  forState:UIControlStateNormal];
}
    [self.tableView deselectRowAtIndexPath:selectedIndexPath animated:YES];
}

}

Для вызова я использую следующие действия для кнопки.

 - (IBAction)callfrom_BcardVeiw
  {
marker *aMarker = [[marker alloc] init];
NSURL *phoneNumberURL = [NSURL URLWithString:[NSString stringWithFormat:@"%d",aMarker.phone]];

[[UIApplication sharedApplication] openURL:phoneNumberURL];
NSLog(@"%d",phoneNumberURL);

  } 

Но я не могу позвонить ..... получить значение мусора.Какую логику я должен поставить под моим - (IBAction) callfrom_BcardVeiw .... чтобы я мог звонить на тот же номер, что и строка заголовка кнопки.

Ответы [ 3 ]

1 голос
/ 25 октября 2011

Попробуйте это:

NSURL *phoneNumberURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@",aMarker.phone]];
0 голосов
/ 25 октября 2011

Удалите все пробелы или другие ненужные чартеры:

NSString *phoneNumber = [aMarker.phone stringByReplacingOccurrencesOfString:@" " withString:@""];

NSURL *phoneNumberURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", phoneNumber]];

if ([[UIApplication sharedApplication] canOpenURL:phoneNumberURL ]) {
   [[UIApplication sharedApplication] openURL:phoneNumberURL];
} else {
   // iPad or iPod Touch, can't make a call
}
0 голосов
/ 25 октября 2011

Префикс URL телефона с "tel: //".

Будьте осторожны. Является ли aMarker.phone целым числом или строкой?

В одной части вашего кода, которую вы используете "% d ", поэтому предполагается, что это целое число, а в другой части вашего кода вы используете"% @ ", что предполагает NSObject, вероятно, NSString.

Номер телефона - это строка (так как он может содержать символы, отличные от цифр, а именно «+» для префиксов intl, или «*» или «#» для некоторых служб ...), поэтому вам нужно использовать @"tel://%@", а не @"tel://%d" или он будет форматировать странные значения в вашем URL (точнее, адрес строки в памяти) вместо фактического номера телефона.

С другой стороны, если номер телефона является целым числом (будетстранно, но использование «% d» вызывает у меня недоумение), а вы используете «% @», ваш код потерпит крах, пытаясь получить доступ к методу описания для некоторого целочисленного значения, которое не является NSObject (оно будет рассматривать целое число как адресNSObject в памяти, в то время как это не так, что объяснит BAD_ACCESS)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...