我一直在寻找解决这个问题的方法,似乎没有人遇到过类似的问题。
基本上我有多个UITextView用于检测来自某些EKEvent.notes的地址,网址,电话号码等(可以通过UIDataDectorTypeAll检测到的任何内容)。然后我将这些UITextViews添加为UIScrollView的子视图。
现在,由于某种原因,一旦UITextView检测到地址或电话号码并成为可操作的目标,它将随机使用其指定字体的2x字体进行绘制!
如果我点按,我会设置测试以重新绘制我的观看次数。当UITextView最初添加到视图中时,我可以用黑色看到正确的文本。然后它执行检测处理并成为可操作的目标。有时它保持适当的大小,有时它以2x字体绘制(但仍然在适当的帧中,因此它被剪裁)。
这是非常直接的,但这是我的代码。所有变量都是正确的值,框架是正确的,文本是正确的,一切都是正确的,大约50%的时间是正确的。它只是其他50%的时间它(显然)2x字体!非常感谢任何帮助!
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
答案 0 :(得分:1)
您可以在<UITextField>
代理处设置字体。
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
locationTextView.font = [UIFont fontWithName:@"AvenirNext-Regular" size:17];
}
答案 1 :(得分:0)
我遇到了同样的问题,因为我使用的是自定义换行符(layoutManager:shouldBreakLineByWordBeforeCharacterAtIndex :)。不得不禁用它。