UITextView的数据检测器选项和文本外观

时间:2016-12-14 07:14:39

标签: ios uitextview uiappearance nsdatadetector datadetectortypes

UITextView提供了非常有用的数据检测器功能,支持:

  • 电话号码检测
  • 网址检测街道地址检测
  • 事件检测
  • 货件追踪号码检测
  • 航班号检测,
  • 信息用户可能想要查找

我准备了一个小样本来测试它,我只有一个问题:

  

如何更改检测到的文字的外观?

应用于tintColor和/或linkTextAttributes的更改似乎仅适用于网址,电子邮件和电话号码。应用于UITextView的tintColorlinkTextAttributes属性的更改似乎不会对事件/日期或时间,地址,货件编号和航班号等项目产生任何影响。

UITextView's Data Detectors option sample

1 个答案:

答案 0 :(得分:0)

似乎只有一种方法使用NSDataDetector。

日期检测的样本如下。

let wAS = aTextView.attributedText.mutableCopy() as! NSMutableAttributedString

let wDateResult = try! NSDataDetector( types: NSTextCheckingResult.CheckingType.date.rawValue ).matches(
    in: wAS.string
,   options: NSRegularExpression.MatchingOptions( rawValue: 0 )
,   range: NSMakeRange( 0, wAS.string.characters.count )
)
for w in wDateResult {
    wAS.addAttributes( [ NSForegroundColorAttributeName : UIColor.red ], range: w.range )
}

aTextView.attributedText = wAS