1

我正在 UITextView 中实现一个链接,它将在导航控制器上推送一个视图控制器。

我正在尝试使用以下方法:

directionTextLabel.text = [directionTextLabel.text stringByAppendingString:[[NSString alloc] initWithFormat:@" %@", siteURL]];
directionTextLabel.dataDetectorTypes = UIDataDetectorTypeLink;

这使我的链接可点击。然后在我的应用程序委托中,我有:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"URL detected.");
    return 1;
}

但是,当我单击该链接时,它会打开一个新页面,而无需调用我的应用程序委托方法。知道出了什么问题,或者我可以通过其他方式实现吗?

谢谢你。

4

2 回答 2

1

委托方法适用于当application:openURL...您的应用程序需要响应其注册的 URL 处理程序(如 Info.plist 文件中定义的)时。URL 事件将被发送到目标应用程序中的类似方法(例如用于 http 链接的 Safari)。

编辑:见这篇文章

于 2012-07-30T21:25:04.093 回答
1

这种方法不会像你认为的那样做。当您的应用程序被某个 URL 方案调用时调用此方法,而不是在您的应用程序打开 URL 时调用。

于 2012-07-30T21:26:46.043 回答