我已经寻找了一段时间来解决这个问题,但似乎没有人遇到类似的问题。基本上,我有多个UITextView,用于从某些EKEvent.notes中检测地址、网址、电话号码等(可以通过UIDataDetectorTypeAll来检测的任何内容)。然后,我将这些UITextView添加为UIScrollView的子视图。
现在,由于某种原因,一旦UITextView检测到地址或电话号码并变为可操作目标,它就会随机以2倍于指定字体的字体绘制!我设置了测试,只需在点击时重新绘制我的视图即可。当UITextView最初添加到视图中时,我可以看到正确文本的黑色字体。然后它进行检测,成为可操作目标。有时它保持正确大小,有时它绘制为2x字体(但仍在正确的框架中,因此它被剪切)。
这非常简单明了,以下是我的代码。所有变量都是正确的值,框架也是正确的,文本也是正确的,一切都是正确的,约50%的时间它会绘制正确。只是另外50%的时间它似乎会变成2倍字体!非常感谢您的帮助!
UITextView *locationTextView = [[UITextView alloc] init];
locationTextView.dataDetectorTypes = UIDataDetectorTypeAll;
locationTextView.text = location;
locationTextView.font = [UIFont fontWithName:@"AvenirNext-Regular" size:17];
locationTextView.editable = NO;
locationTextView.userInteractionEnabled = YES;
locationTextView.contentInset = UIEdgeInsetsMake(-8,-8,-8,-8);
locationTextView.frame =CGRectMake(kBufferLeft, daySize.height, kBufferDayViewTextWidth, locationSize.height);
[scrollView addSubview:locationTextView];
正确示例: http://i.imgur.com/3pJ43kj.jpg
错误示例: http://i.imgur.com/DLq4gco.jpg
(目前还不能发布图片,抱歉。)
同样的代码产生了两种效果。感谢您的时间。
祝好!
编辑: 我选择使用TTTAttributedLabels解决这个问题。
github.com/mattt/TTTAttributedLabel