UITextView字体为零

L D*_*L D 34 fonts objective-c uitextview uifont ios

我在故事板中创建了一个字体大小为14的UITextView,并将其连接到我的ViewController的detailDescriptionLabel属性.此代码位于viewDidLoad中:

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

控制台输出如下:

text is Lorem Ipsum; font is (null)
Run Code Online (Sandbox Code Playgroud)

为什么字体设置为nil?setFont:正在工作; 字体缩小了.我希望得到字体,所以在手势后我可以在字体上调用lineHeight.这样,我可以使用以下代码找出已经使用了哪一行:

int line = [tap locationInView:tap.view].y / self.detailDescriptionLabel.font.lineHeight;
Run Code Online (Sandbox Code Playgroud)

这里的字体也是零.line设置为-2147483648,这显然不是我想要的.

Ty *_*obb 115

尝试UITextView在Interface Builder中选中"selectable"复选框.它位于Attributes Inspector中.根据下面的Per @ VahramDodoryan的评论,selectable如果您不想支持选择,则可以设置为false.

我无法解释为什么会这样,但它可能是一个UIKit错误.我有一个IBOutletUITextView其字体特性是零,而不会在代码中的任何字体或字体颜色的变化做出反应,直到它的Text属性已被设置.我通过反复试验得出了这个解决方案.


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

  • 您可以在代码中设置textView.selectable = NO属性,使其不可选,而不会出现这个奇怪的问题. (17认同)
  • 这绝对应该标记为答案.非常感谢Ty Cobb! (3认同)
  • 有没有可以理解的理由为什么Apple会这样设置?或者这应该作为Apple的错误提交? (3认同)
  • 我不知道为什么这是必需的(在iOS7上),但它也适用于我.一旦我在IB中设置"可选"框,我就可以在textField中查询字体.在iOS7中设置为textField的文本没有采用字体,所以我查询字段,设置文本,并重置字体,这使它工作. (2认同)

Cod*_*elp -1

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