4

我一直在寻找解决这个问题的方法,似乎没有人遇到过类似的问题。

基本上,我有多个 UITextView,用于从一些 EKEvent.notes 中检测地址、url、电话号码等(可以通过 UIDataDectorTypeAll 检测到的任何内容)。然后我将这些 UITextViews 添加为 UIScrollView 的子视图。

现在,出于某种原因,一旦 UITextView 检测到地址或电话号码并成为可操作的目标,它将随机绘制 2 倍于其指定字体的字体!

如果我点击,我已经设置了测试来重绘我的视图。当 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

4

2 回答 2

1

<UITextField>您可以在委托处设置字体。

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 

{ 
  locationTextView.font = [UIFont fontWithName:@"AvenirNext-Regular" size:17];
}
于 2013-05-17T15:36:42.873 回答
0

我遇到了同样的问题,因为我使用的是自定义换行符(layoutManager:shouldBreakLineByWordBeforeCharacterAtIndex:)。不得不禁用它。

于 2014-05-27T10:13:27.583 回答