TextViews 在 ScrollView 中的位置不正确

Posted

技术标签:

【中文标题】TextViews 在 ScrollView 中的位置不正确【英文标题】:TextViews not in correct position in ScrollView 【发布时间】:2016-01-04 05:09:32 【问题描述】:

我有两个 UITextView 框,它们位于 UIView 中,而 UIScrollView 中。我的问题是,当我在模拟器中运行应用程序时,UITextView 框比我想要的要低,但是在 UITextView 框内单击后,然后关闭键盘并且我的 textViewDidEndEditing 函数触发,他们设置回到我最初希望它们所在的位置。在我的textViewDidEndEditing 函数中,我确实将UIScrollView 内容偏移设置回(0,0)所以我最初的解决方案是我需要设置内容偏移立即到 (0,0) ,然后将我的两个 UITextView 框放在我想要的位置。

现在我首先尝试在viewDidLoad 中执行此操作,但没有任何更改,因此我尝试在viewDidAppear 中设置它,这有效,但我的问题是一旦视图出现,您实际上会看到 textview盒子弹出到位,我不喜欢那样。我还检查了我的约束,它们都很好,因为我认为它们也可能导致问题。当视图出现时,我不太确定在没有实际看到UITextView 弹出到位的情况下我能做些什么来使它工作。

这是视图控制器第一次出现时 UITextView 框的样子,而没有 viewDidAppear 方法设置内容偏移量。

这就是我想要的 UITextView 框的样子。

任何帮助将不胜感激。谢谢

【问题讨论】:

如果您以编程方式创建它,请尝试在viewDidLoad 中创建框,然后在viewDidLayoutSubview 中设置它们的位置,它应该可以解决问题 感谢您的回复。所以只是为了确保我理解,从情节提要中删除两个文本视图框并在 viewDidLoad 中创建它们,然后在 viewDidLayoutSubview 中设置它们? viewDidLoad 中设置self.automaticallyAdjustsScrollViewInsets = false 对不起,我的意思是你在代码中设置的任何与大小和约束相关的东西,你应该把它放在viewDidLayoutSubview,它和你在viewDidAppear中设置的一样,但不会被注意到眼睛,如果你已经用故事板创建了这些盒子,那么保留它:) 在这种情况下是你的scrollview content offset 我猜? @Hamza Ansari,效果很好。非常感谢你。是否有默认情况下自动设置滚动视图插图的原因? 【参考方案1】:

在您的 viewDidLoad 中将 viewController autoScollViewInsets 设置为 false:

override func viewDidLoad() 
    super.viewDidLoad()

    self.automaticallyAdjustsScrollViewInsets = false

您想了解有关此问题的更多详细信息,请查看此答案: Explaining difference between automaticallyAdjustsScrollViewInsets, extendedLayoutIncludesOpaqueBars, edgesForExtendedLayout in ios7

【讨论】:

乐于帮助 aCertos

以上是关于TextViews 在 ScrollView 中的位置不正确的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 scrollView 修复背景图像和使用 edittext 修复 textviews

iOS SDK:一个ScrollView中有两个TextView?

如何将可扩展的 ListView 放入 ScrollView

如何将选定的对话框值设置为片段中的 TextViews [重复]

Android:将 id 和 name 从微调器中的选定项目放入两个不同的 textViews

ListView 中的可见性消失