【问题标题】:Detect Click on nsurl on uitextview检测点击 uitextview 上的 nsurl
【发布时间】:2012-06-12 07:29:07
【问题描述】:

我的文本视图中有一个 URL,当我们单击此 URL 时,它会在默认 safari 中打开此 URL。我想检测这个事件。我也试过this

但它不适合我。任何人都可以建议我如何做到这一点。为我提供一个样本。

我的应用代理是 UIResponder 类型。

【问题讨论】:

  • @NicolasManzini 如果你仔细阅读我的帖子,我写了什么。这对我不起作用。???
  • 对不起,你是对的。顺便说一句,我认为你能做的最好的就是像我一样使用 uiwebview。您将获得更简单的拦截点击方式,并且可以自定义链接颜色

标签: iphone uiwebview overriding uitextview


【解决方案1】:

other answer 按预期工作。

创建New File,选择Objective-C Class

  • 类:MyApplication
  • 子类:UIApplication

将此代码粘贴到.m 文件中:

- (BOOL)openURL:(NSURL *)url {
    if  ([self handleOpenURL:url])
        return YES;
    else
        return [super openURL:url];
}
- (BOOL)handleOpenURL:(NSURL*)url {
    NSLog(@"my url handler");
    return YES;
}

接下来打开您的main.m 并更改第三个参数

return UIApplicationMain(argc, argv, nil, NSStringFromClass([SampleAppDelegate class]));

到您的UIApplication-子类名称

return UIApplicationMain(argc, argv, @"MyApplication", NSStringFromClass([SampleAppDelegate class]));

【讨论】:

  • 我已经尝试过了。但是当我更改 main.m 文件时,它显示错误并且应用程序未编译。
  • 我在发布之前已经尝试过自己并确保它可以正常工作。您如何命名您的自定义 UIApplication 子类? ......错误在说什么?
【解决方案2】:

看看这个 GitHub 项目:MSTextView

【讨论】:

  • 感谢您的回复。但实际上 MSTextView 不是 TextView。它的 UIVIEW 类型。我已经在我的应用程序中添加了 textview,所以现在我不想用 MSTEXTVIEW 替换所有文本视图。
  • 好的,那么您发布的第一个解决方案有什么问题?
  • 我在我的 main.m 文件中添加了这个,但它不起作用.. NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, @"MyApplication", nil);不调用 openlink 方法。 [池释放];返回 retVal;
【解决方案3】:

假设您只需要显示带有链接的静态标签,我们在 Nimbus 中有一个相当强大的属性标签,您可能希望查看:

http://docs.nimbuskit.info/group___nimbus_attributed_label.html

标签使用 CoreText 和 NSAttributedString,因此它是基于 Apple 核心技术构建的。它在各个方面都像 UILabel 一样。下面是一个实现 NIAttributedLabel 委托的示例:

https://github.com/jverkoey/nimbus/blob/master/examples/attributedlabel/BasicAttributedLabel/BasicAttributedLabel/src/MashupViewController.m#L92

更多信息: http://nimbuskit.info/

【讨论】:

  • 对不起。我不需要标签。我需要uitextview。因为我已经完成了申请,所以现在不可能在所有地方都改变。
猜你喜欢
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 2013-10-20
  • 1970-01-01
相关资源
最近更新 更多