34

我在情节提要中创建了一个字体大小为 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,这显然不是我想要的。

4

3 回答 3

115

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

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


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

于 2013-10-21T16:14:45.653 回答
0

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

包括上面建议的可选

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

于 2016-05-04T13:43:53.820 回答
-1

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

于 2013-10-20T01:08:26.243 回答