我将库 - JVFloatLabeledTextField连接到我的项目。 我开始使用真正的设备,但问题可以在模拟器上重现(我尝试使用iphone 7和iOS 10.2)。如果在textView中输入一些文本,则选择文本并单击“全选”。应用程序将处于无限循环中,称为layoutSubviews。
我尝试修复问题并为textView添加了自定义类。我重新定义了intrinsicContentSize,它有效,但还有其他困难。告诉我如何解决这个问题。测试项目被添加到我的存储库中: https://github.com/ed8009/textView-With-JVFloatLabeledTextView
答案 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];
}