如何从iphone应用程序查询中调用safari中的weblink

时间:2011-11-17 14:27:31

标签: iphone email mobile-safari

我正在解析xml文件以获取电话号码值(aMarker.web = weblink)。其中marker是我在解析器控制器中获取的xml文件中的属性。我可以使用

在Button标题上设置此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获取相应的网址但无法在Safari中打开此网址。我应该在哪里纠正上面的代码??? 我还想通过传递动态字符串aMarker.email来调用邮件应用程序。你能否建议代码。

1 个答案:

答案 0 :(得分:0)

您将使用数据检测器。例如,您可能会这样做:

- (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,它可以处理属性文本(样式)并检测电话号码,链接和地址等内容。基本上你想要的是数据检测器。