gpt4 book ai didi

ios - UITextView contentOffset 在 vi​​ewDidLoad 和 viewDidAppear 之间变化

转载 作者:可可西里 更新时间:2023-11-01 05:20:40 24 4
gpt4 key购买 nike

在 iOS 8 上(我没有在 iOS 7 上测试过)我有一个 UITextView,它的文本设置在 Storyboard中。当 View 实际出现时,文本出现滚动,我不希望它滚动。事实上,我不知道为什么有人会这样做。任何人都可以解释如何更改此行为,使其显示为应该滚动到顶部吗?

这非常容易重现:

  1. 开始一个新项目
  2. 添加一个带有约束的 UITextView 以将其粘在边距上
  3. 用超出其边界的更多文本填充它(有助于将字体大小增加到大约 36)。
  4. 运行。

它在视觉上很明显,但是如果您记录发生的事情,您将看到类似以下内容:

2015-03-10 10:34:47.198 ScrollViewTest[61180:2610445] [Inside viewDidLoad] <UITextView: 0x7f9c79851200; frame = (0 0; 600 600); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f9c78c89df0>; layer = <CALayer: 0x7f9c78c8c220>; contentOffset: {0, 0}; contentSize: {600, 592}>
2015-03-10 10:34:47.288 ScrollViewTest[61180:2610445] [Inside viewDidAppear] <UITextView: 0x7f9c79851200; frame = (0 0; 375 667); text = 'Lorem ipsum dolor sit er ...'; clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7f9c78c89df0>; layer = <CALayer: 0x7f9c78c8c220>; contentOffset: {0, 457.5}; contentSize: {375, 1176}>

大概这是因为 frame 和/或 contentSize 从 Storyboard 的初始加载更改为它需要显示的实际尺寸。

这似乎类似于 UITextView contentOffset is set但该问题的公认答案不起作用。这也不能通过设置 self.automaticallyAdjustsScrollViewInsets = NO 来解决。

最佳答案

我的猜测是,当应用自动布局时,内容偏移被破坏了。这发生在 -layoutSubviews 执行之前。

因此,为了解决这个问题,我可以推荐两种解决方案。

  1. 子类 UITextView 并在 -layoutSubviews 中设置 contentOffset
  2. -viewDidLayoutSubviews 添加到您的 View Controller ,并为那里的任何 TextView 设置 contentOffset

这两种解决方法都是 hacky 的解决方法,但比 -viewDidAppear:dispatch_async() 更好。


注意:注意确保只在适当的时候调整 -layoutSubviews-viewDidLayoutSubviews 中的 contentOffset .

关于ios - UITextView contentOffset 在 vi​​ewDidLoad 和 viewDidAppear 之间变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com