iOS 10.2上textView的无限循环

时间:2018-03-04 09:18:11

标签: ios textview infinity layoutsubviews

我将库 - JVFloatLabeledTextField连接到我的项目。 我开始使用真正的设备,但问题可以在模拟器上重现(我尝试使用iphone 7和iOS 10.2)。如果在textView中输入一些文本,则选择文本并单击“全选”。应用程序将处于无限循环中,称为layoutSubviews。

我尝试修复问题并为textView添加了自定义类。我重新定义了intrinsicContentSize,它有效,但还有其他困难。告诉我如何解决这个问题。测试项目被添加到我的存储库中: https://github.com/ed8009/textView-With-JVFloatLabeledTextView

1 个答案:

答案 0 :(得分:2)

您已确定此问题。问题在于这部分代码。

if (!self.scrollEnabled && !CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) { 
 [self invalidateIntrinsicContentSize]; 
}

特别是[self invalidateIntrinsicContentSize];

调用它后,intrinsicContentSize和self.bounds.size永远不会匹配。因此,视图无限布局。解决此问题的方法是将其更改为[self layoutIfNeeded];这将同步更新布局并解决此问题。您的代码应如下所示。

if (!self.scrollEnabled && !CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
    [self layoutIfNeeded];
}