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 [重复]