我正在解析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来调用邮件应用程序。你能否建议代码。
答案 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,它可以处理属性文本(样式)并检测电话号码,链接和地址等内容。基本上你想要的是数据检测器。