Как позвонить на веб-ссылку в сафари из запроса приложения iphone - PullRequest
0 голосов
/ 17 ноября 2011

Я анализирую xml-файл, чтобы получить значения телефонных номеров (aMarker.web = weblink).Где маркер - это атрибуты в XML-файле, которые я получаю в контроллере парсера.Я могу установить эту строку webLink для заголовка кнопки, используя

        [w_Bcard setTitle:[NSString stringWithFormat:@"%@",aMarker.web] forState:UIControlStateNormal];

, но, нажав кнопку, я не могу позвонить по номеру.Посмотрите мой код

 - (IBAction)weblink_BcardVeiw
   {

NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];

marker *aMarker = (marker *)[appDelegate.markers  objectAtIndex:selectedIndexPath.row];
 for (int selectedIndexPath = 0; selectedIndexPath < [appDelegate.markers count];  selectedIndexPath++)
 {
    NSString *utfString = [NSString stringWithFormat:@"%@",aMarker.web];        
    NSURL *url = [NSURL URLWithString:utfString];

    [[UIApplication sharedApplication] openURL:url];
    NSLog(@"%@",url);
   }
[self.tableView deselectRowAtIndexPath:selectedIndexPath animated:YES];

Путем NSloging m получает соответствующий URL, но не может открыть этот URL в сафари.Где я должен исправить приведенный выше код ???Я также хочу вызвать почтовое приложение, передав динамическую строку aMarker.email.Можете ли вы предложить этот код также.

1 Ответ

0 голосов
/ 17 ноября 2011

Вы бы использовали детектор данных. Например, вы можете сделать что-то вроде этого:

- (void)dataDetectorPassInRange:(NSRange)range
{
    if (![self dataDetectorTypes])
            return;

    NSError* error = NULL;
    NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:self.dataDetectorTypes error:&error];
    NSAssert(error == nil, @"Problem creating the link detector: %@", [error localizedDescription]);
    NSString* string = [self yourStringStore];

    [detector enumerateMatchesInString:string options:0 range:range usingBlock:^(NSTextCheckingResult* match, NSMatchingFlags flags, BOOL* stop){
            NSRange matchRange = [match range];
            if([match resultType] == NSTextCheckingTypePhoneNumber)
            {
                    NSString* phoneNumber = [match phoneNumber];
                    NSURL* phoneURL = [NSURL URLWithString:phoneNumber];
                    [[UIApplication sharedApplication] openURL:phoneURL];
            }
    }];
}

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

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