Iphone 如何检测用户单击超链接

Iphone 如何检测用户单击超链接,iphone,objective-c,Iphone,Objective C,我的应用程序将显示一些文本,我想让超链接能够被点击。我对这个功能有一些疑问 如何解析文本以了解这是一个链接 一旦用户单击链接,我不希望操作系统切换到Safari并打开链接,这非常糟糕,因为用户无法返回到我的应用程序。所以我想在我的应用程序中打开链接。只要用户点击链接,我的应用程序就会显示一个视图来显示网页内容。如有任何建议,将不胜感激 您可能希望将UILabel子类化。更改文本时,让它尝试查看文本是否为超链接,如果是,请将其设置为启用用户交互,并将文本颜色更改为蓝色。当用户点击链接时,向主视图控

我的应用程序将显示一些文本,我想让超链接能够被点击。我对这个功能有一些疑问

  • 如何解析文本以了解这是一个链接

  • 一旦用户单击链接,我不希望操作系统切换到Safari并打开链接,这非常糟糕,因为用户无法返回到我的应用程序。所以我想在我的应用程序中打开链接。只要用户点击链接,我的应用程序就会显示一个视图来显示网页内容。如有任何建议,将不胜感激

  • 您可能希望将UILabel子类化。更改文本时,让它尝试查看文本是否为超链接,如果是,请将其设置为启用用户交互,并将文本颜色更改为蓝色。当用户点击链接时,向主视图控制器发送一条消息(可能通过委派)以打开链接

  • 要在应用程序中显示web内容,请查看UIWebView

  • 您可能希望将UILabel子类化。更改文本时,让它尝试查看文本是否为超链接,如果是,请将其设置为启用用户交互,并将文本颜色更改为蓝色。当用户点击链接时,向主视图控制器发送一条消息(可能通过委派)以打开链接

  • 要在应用程序中显示web内容,请查看UIWebView


  • 如果您的文本可以格式化为带有超链接(
    标记)的html,则可以使用UIWebView来显示它


    当用户点击链接时,将调用UIWebViewDelegate的
    webView:shouldStartLoadWithRequest:navigationType:
    方法。通常,您会让控制器实现此方法,并将UIWebView的委托设置为控制器。

    如果您的文本可以格式化为带有超链接(
    标记)的html,则可以使用UIWebView来显示它


    当用户点击链接时,将调用UIWebViewDelegate的
    webView:shouldStartLoadWithRequest:navigationType:
    方法。通常,您会让控制器实现此方法,并将UIWebView的委托设置为控制器。

    您将要签出一个名为的Github项目

    它将自动检测
    .text
    属性中的所有URL

    您可以这样使用它:

    LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
    label.delegate = self;
    label.text = @"Check out http://dundermifflin.com to find some great paper deals!";
    
    然后确保
    self
    实现此方法:

    - (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url {
        [[UIApplication sharedApplication] openURL:url];
    }
    
    您还可以使用
    linkColor
    textColor
    属性来配置标签的外观。从这一点上,您可以像使用任何其他UILabel一样使用它

    完成所有操作后,请记住将
    委托
    设置为
    nil
    ,以确保所有内容都已清理完毕


    希望这有帮助。

    您将要查看一个名为的Github项目

    它将自动检测
    .text
    属性中的所有URL

    您可以这样使用它:

    LRLinkableLabel *label = [[LRLinkableLabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
    label.delegate = self;
    label.text = @"Check out http://dundermifflin.com to find some great paper deals!";
    
    然后确保
    self
    实现此方法:

    - (void) linkableLabel:(LRLinkableLabel *)label clickedButton:(UIButton *)button forURL:(NSURL *)url {
        [[UIApplication sharedApplication] openURL:url];
    }
    
    您还可以使用
    linkColor
    textColor
    属性来配置标签的外观。从这一点上,您可以像使用任何其他UILabel一样使用它

    完成所有操作后,请记住将
    委托
    设置为
    nil
    ,以确保所有内容都已清理完毕


    希望这能有所帮助。

    UIWebView可以同时完成这两件事。您还可以查看UITextView的dataDetectorTypes,它将为您找到超链接。UIWebView将完成这两项工作。您还可以查看UITextView的dataDetectorTypes,它将为您找到超链接。