用UITextView的dataDetectorTypes属性可完成类似功能
此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字。
电话号码点击后拨出电话,网址点击后会用Safari打开,电子邮件会用mail打开,而符合格式的日期会弹出一个ActionSheet,有创建事件,在Calendar中显示,和拷贝三个选项。
- enum {
- UIDataDetectorTypePhoneNumber = 1 << 0, // Phone number detection
- UIDataDetectorTypeLink = 1 << 1, // URL detection
- #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- UIDataDetectorTypeAddress = 1 << 2, // Street address detection
- UIDataDetectorTypeCalendarEvent = 1 << 3, // Event detection
- #endif
- UIDataDetectorTypeNone = 0, // No detection at all
- UIDataDetectorTypeAll = NSUIntegerMax // All types
- };
- typedef NSUInteger UIDataDetectorTypes;
用UITextView的dataDetectorTypes属性可完成类似功能此属性可以设定使电话号码、网址、电子邮件和符合格式的日期等文字变为链接文字。电话号码点击后拨出电话,网址点击后会用Safari打开,电子邮件会用mail打开,而符合格式的日期会弹出一个ActionSheet,有创建事件,在Calendar中显示,和拷贝三个选项。
- enum {
- UIDataDetectorTypePhoneNumber = 1 << 0, // Phone number detection
- UIDataDetectorTypeLink = 1 << 1, // URL detection
- #if __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED
- UIDataDetectorTypeAddress = 1 << 2, // Street address detection
- UIDataDetectorTypeCalendarEvent = 1 << 3, // Event detection
- #endif
- UIDataDetectorTypeNone = 0, // No detection at all
- UIDataDetectorTypeAll = NSUIntegerMax // All types
- };
- typedef NSUInteger UIDataDetectorTypes;
以上是UIKit框架中,UIDataDetectors.h文件内关于UIDataDetectorTypes的定义。由定义可以看出,我们可以使用|的关系来指定自己想要的链接化文字的方式。
测试代码:
- UITextView *mtextview = [[UITextView alloc] initWithFrame:CGRectMake(550, 360, 200, 200)];
- mtextview.backgroundColor = [UIColor grayColor];
- mtextview.dataDetectorTypes = UIDataDetectorTypeAll;
- mtextview.editable = NO;(必须的)
- mtextview.text = @"My phone number is +8602980000000.\r\n"
- "My personal web site www.xxxxxx.com.\r\n"
- "My E-mail address is XXXXX@gmail.com.\r\n"
- "I was born in 1900-01-01.";
- [self addSubview:mtextview];
- [mtextview release];
就是这样,神奇的超链接功能就实现啦