【问题标题】:iOS link in UITextView that open UIViewControllerUITextView 中打开 UIViewController 的 iOS 链接
【发布时间】:2012-07-28 14:41:25
【问题描述】:

我正在 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;
}

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

谢谢。

【问题讨论】:

    标签: ios uiviewcontroller hyperlink uibutton uitextview


    【解决方案1】:

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

    编辑:见this post

    【讨论】:

    • 你知道在类中处理 URL 调用的任何方法吗?
    • 事实上,我愿意。我想我明白你为什么要得到这个解决方案。您需要继承 Application 类并覆盖类似命名的方法。见this post
    • 这篇文章看起来很棒!谢谢,我会看看,然后回复你。
    • 天哪,子类化 UIApplication 似乎有点矫枉过正。
    • 同意,但UITextView 似乎没有提供捕获这些事件的委托方法。 (编辑:如果您想避免使用私有 API,至少不要这样做)
    【解决方案2】:

    这个方法并没有像你想象的那样做。当您的应用程序被某个 URL 方案调用时调用此方法,而不是在您的应用程序打开 URL 时调用。

    【讨论】:

      猜你喜欢
      • 2015-09-11
      • 2015-03-21
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      • 2012-06-13
      • 2023-03-31
      • 1970-01-01
      相关资源
      最近更新 更多