我将库 - JVFloatLabeledTextField 连接到我的项目。 我在真实设备上启动,但问题可以在模拟器上重现(我尝试使用 iphone 7 plus iOS 10.2)。如果在 textView 中输入一些文本,则选择该文本并单击“全选”。应用程序将处于无限循环中,称为 layoutSubviews。
我试图解决这个问题并为 textView 添加了一个自定义类。我重新定义了 intrinsicContentSize,它可以工作,但还有其他困难。告诉我如何解决这个问题。测试项目已添加到我的存储库中: https://github.com/ed8009/textView-With-JVFloatLabeledTextView
最佳答案
您已确定问题所在。问题在于这部分代码。
if (!self.scrollEnabled && !CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
[self invalidateIntrinsicContentSize];
}
特别是,[self invalidateIntrinsicContentSize];
调用此方法时,intrinsicContentSize 和 self.bounds.size 永远不会匹配。因此, View 被无限地布置。解决这个问题的方法是将其更改为 [self layoutIfNeeded];
这将同步更新布局并修复此问题。您的代码应如下所示。
if (!self.scrollEnabled && !CGSizeEqualToSize(self.bounds.size, [self intrinsicContentSize])) {
[self layoutIfNeeded];
}
关于ios - iOS 10.2 上 textView 的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093844/