【问题标题】:UITextView font is nilUITextView 字体为零
【发布时间】:2013-10-28 14:01:30
【问题描述】:

我在情节提要中创建了一个字体大小为 14 的 UITextView,并将其连接到我的 ViewController 的 detailDescriptionLabel 属性。此代码在 viewDidLoad 中:

self.detailDescriptionLabel.font=[UIFont systemFontOfSize:10];
NSLog(@"text is %@; font is %@", self.detailDescriptionLabel.text, self.detailDescriptionLabel.font);

控制台输出如下:

text is Lorem Ipsum; font is (null)

为什么字体设置为零? setFont: 正在工作;字体确实缩小了。我想获得字体,所以在一个手势之后我可以在字体上调用 lineHeight 。这样,我就可以用下面的代码找出哪一行被点击了:

int line = [tap locationInView:tap.view].y / self.detailDescriptionLabel.font.lineHeight;

这里的字体也是 nil。行设置为-2147483648,这显然不是我想要的。

【问题讨论】:

  • 您是否尝试过仅在情节提要中设置字体?
  • 我使用了你的代码,一切正常!

标签: ios objective-c fonts uitextview uifont


【解决方案1】:

您应该尝试记录self.detailDescriptionLabel。该值可能为空。

【讨论】:

    【解决方案2】:

    尝试在 Interface Builder 中选中此 UITextView 的“可选择”复选框。它在属性检查器中。根据下面@VahramDodoryan 的评论,如果您不想支持选择,则可以将selectable 设置为false。

    我无法解释为什么会这样,但它可能是一个 UIKit 错误。我有一个IBOutlet 到一个UITextView,其字体属性为nil,它不会响应代码中的任何字体或文本颜色更改,直到之后 设置了它的文本属性。我通过反复试验得出了这个解决方案。


    如果您在最近的 iOS 版本中仍然遇到此问题,请考虑打开雷达:

    【讨论】:

    • 我不知道为什么需要这样做(在 iOS7 上),但它也对我有用。一旦我在 IB 中设置了“可选”框,我就可以在 textField 中查询字体。在 iOS7 中设置为 textField 的文本没有采用该字体,因此我查询该字段、设置文本并重置字体,使其工作。
    • 这绝对应该被标记为答案。非常感谢 Ty Cobb!
    • 您可以在代码中设置 textView.selectable = NO 属性,使其在没有这个奇怪问题的情况下不可选择。
    • Apple 有这样设置它的任何可感知的原因吗?还是应该将此作为错误提交给 Apple?
    • 我在 iOS 10 中没有遇到此错误。仅在 iOS 9 中用于 textview。
    【解决方案3】:

    我尝试更改文本视图中的每个属性和约束。

    包括上面建议的可选

    最后我沮丧地删除并重新添加了它,这是不令人满意的修复。

    【讨论】:

      猜你喜欢
      • 2013-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 2015-05-21
      • 1970-01-01
      • 2012-05-13
      • 2013-05-30
      • 1970-01-01
      相关资源
      最近更新 更多