设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

Xamarin iOS开发实战套装
搜索
查看: 1654|回复: 0

【iPhone每日一问】UILabel:字符串如何作为文本和链接

[复制链接]
MrLi 发表于 2014-2-13 15:00:04 | 显示全部楼层 |阅读模式

问:
我有一个标签,它的文本是从服务器上获取的。有一些文本作为链接被认定,并且接触这些链接应该执行一些动作。例如
  1. NSString *str = @"My phone number is 645-345-2345 and my address is xyz";
复制代码
这是标签的完整文本,我只有一个标签显示当前文本(文本是动态的,我只是举了一个例子)。点击这些链接,我需要执行一些动作,像是导航到其他的一些不同的屏幕或者打电话。
我知道,我可以使用OHAttributedLabel的帮助显示这样的文本。并且这些链接也可以使用如下代码显示:
[label1 addCustomLink:[NSURL URLWithString:@"http://www.foodreporter.net"] inRange:[txt rangeOfString:someString]];
但是,我想知道如何让这些文本链接执行一些动,,像是导航到其他的一些不同的屏幕或者打电话。
如果有更多的帮助,请让我知道。
答:
您可以添加定制的动作到任何可用的UILabel中,代替支持使用一个假的你将会拦截的URL方案,代码如下:
  1. TTTAttributedLabel *tttLabel = <# create the label here #>;
  2. NSString *labelText = @"Lost? Learn more.";
  3. tttLabel.text = labelText;
  4. NSRange r = [labelText rangeOfString:@"Learn more"];
  5. [tttLabel addLinkToURL:[NSURL URLWithString:@"action://show-help"] withRange:r];
复制代码
之后,在你的TTTAttributedLabelDelegate:中编写以下代码:
  1. - (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
  2.     if ([[url scheme] hasPrefix:@"action"]) {
  3.         if ([[url host] hasPrefix:@"show-help"]) {
  4.             /* load help screen */
  5.         } else if ([[url host] hasPrefix:@"show-settings"]) {
  6.             /* load settings screen */
  7.         }
  8.     } else {
  9.         /* deal with http links here */
  10.     }
  11. }
复制代码
TTTAttributedLabel是OHAttributedLabel的一个分支。
如果你想要一个更复杂的方法,看看Nimbus Attributed Label(它是使用NSAttributedString提供自定义的文本样式一个UILabel。)。它支持自定义链接的即装即用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-4-22 06:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表