【问题标题】:UITextView changes font when detects actionUITextView 在检测到动作时更改字体
【发布时间】:2013-04-20 01:58:04
【问题描述】:

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

基本上,我有多个 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

【问题讨论】:

    标签: ios objective-c uiscrollview uitextview datadetectortypes


    【解决方案1】:

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

    -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
    
    { 
      locationTextView.font = [UIFont fontWithName:@"AvenirNext-Regular" size:17];
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-02
        • 2013-10-18
        • 2011-10-31
        • 1970-01-01
        • 2011-09-24
        • 2011-05-21
        • 2012-07-20
        • 1970-01-01
        相关资源
        最近更新 更多