关闭

UITextView implement hyper linker

1245人阅读 评论(0) 收藏 举报
分类:

用UITextView的dataDetectorTypes属性可完成类似功能
此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字。
电话号码点击后拨出电话,网址点击后会用Safari打开,电子邮件会用mail打开,而符合格式的日期会弹出一个ActionSheet,有创建事件,在Calendar中显示,和拷贝三个选项。

  1. enum {
  2.     UIDataDetectorTypePhoneNumber   = 1 << 0,          // Phone number detection
  3.     UIDataDetectorTypeLink          = 1 << 1,          // URL detection   
  4. #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
  5.     UIDataDetectorTypeAddress       = 1 << 2,          // Street address detection
  6.     UIDataDetectorTypeCalendarEvent = 1 << 3,          // Event detection
  7. #endif   
  8.  
  9.     UIDataDetectorTypeNone          = 0,               // No detection at all
  10.     UIDataDetectorTypeAll           = NSUIntegerMax    // All types
  11. };
  12. typedef NSUInteger UIDataDetectorTypes;

用UITextView的dataDetectorTypes属性可完成类似功能此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字。电话号码点击后拨出电话,网址点击后会用Safari打开,电子邮件会用mail打开,而符合格式的日期会弹出一个ActionSheet,有创建事件,在Calendar中显示,和拷贝三个选项。

  1. enum {
  2.     UIDataDetectorTypePhoneNumber   = 1 << 0,          // Phone number detection
  3.     UIDataDetectorTypeLink          = 1 << 1,          // URL detection   
  4. #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
  5.     UIDataDetectorTypeAddress       = 1 << 2,          // Street address detection
  6.     UIDataDetectorTypeCalendarEvent = 1 << 3,          // Event detection
  7. #endif   
  8.  
  9.     UIDataDetectorTypeNone          = 0,               // No detection at all
  10.     UIDataDetectorTypeAll           = NSUIntegerMax    // All types
  11. };
  12. typedef NSUInteger UIDataDetectorTypes;

以上是UIKit框架中,UIDataDetectors.h文件内关于UIDataDetectorTypes的定义。由定义可以看出,我们可以使用|的关系来指定自己想要的链接化文字的方式。
测试代码:

  1. UITextView *mtextview = [[UITextView alloc] initWithFrame:CGRectMake(550, 360, 200, 200)];
  2.         mtextview.backgroundColor = [UIColor grayColor];
  3.         mtextview.dataDetectorTypes = UIDataDetectorTypeAll;
  4.         mtextview.editable = NO;(必须的)
  5.         mtextview.text = @"My phone number is +8602980000000.\r\n"
  6.         "My personal web site www.xxxxxx.com.\r\n"
  7.         "My E-mail address is XXXXX@gmail.com.\r\n"
  8.         "I was born in 1900-01-01.";
  9.         [self addSubview:mtextview];
  10.         [mtextview release];

就是这样,神奇的超链接功能就实现啦


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1699553次
    • 积分:16941
    • 等级:
    • 排名:第581名
    • 原创:234篇
    • 转载:633篇
    • 译文:0篇
    • 评论:134条
    最新评论