UITextView textContainerInsets 随 preferredContentSize 变化

UITextView textContainerInsets changing with preferredContentSize

在弹出窗口的顶部,我有一个高度为 100 像素的 UITextView,我使用 textView.textContainerInset = UIEdgeInsets(...) 调整了其文本容器插入。弹出窗口的高度使用 self.navigationController?.preferredContentSize.height = someHeight 随时间变化,其中 selfUIViewControllerUIPopoverPresentationControllerDelegate.

的子类

当我使用该方法调整弹出窗口的高度时,文本视图的文本容器下降了大约 50 像素,就好像它的插图是动画的一样。在调整高度无济于事后,我尝试明确重置文本容器插图。

打开视图调试器显示文本视图本身仍然是 100px 高,但清楚地显示文本容器(它被列为 _UITextContainerView 并且无法直接访问)已经下降了大约 50px。

知道是什么导致了插图或 _UITextContainerView 那样下降吗?

我最终在视图控制器上设置了 self.automaticallyAdjustsScrollViewInsets = false 并且成功了。

我怀疑这是可行的,因为 UITextView 在文本超出其边界时具有滚动行为(不确定内部是否是完整的滚动视图,我在某些地方读到它是和其他人说它不是。)并且因为包含视图控制器的首选内容大小的高度已经改变,它对文本视图的内容产生了影响(这个内容是前面提到的_UITextContainerView。)所以通过设置 self.automaticallyAdjustsScrollViewInsets = false,这阻止了文本视图将其文本容器下降约 50px,最终为 44px(旧高度和新高度之间的差值。看图!)