UITextView的UIScrollView的内部用自动版式

问题描述 投票:28回答:5

我试图把里面的UITextView用的UIScrollView自动版式,没有运气。我曾尝试是,

  • 我放置的UIScrollView在故事板的主视图内
  • 我在故事板放置的UITextView内的UIScrollView和残疾人滚动启用
  • 我上的UIScrollView设置限制(前置,顶部,底部)
  • 我设置的限制(顶部,前置,高度)上的UITextView
  • 我创建的UITextView的高度约束的IBOutlet中
  • 我上的UITextView在viewDidLoad中设置文本(大量的文字这可能会导致滚动)()
  • 我设置的UITextView的高度约束与下面的代码。我在viewDidLoad中()和viewDidLayoutSubviews(),没有运气设置文本之后试了一下

self.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, FLT_MAX)].height;

UITextView中越来越它的高度,但UIScrollView中是没有的。有什么我已经错过了?

objective-c uiscrollview autolayout uitextview nslayoutconstraint
5个回答
77
投票

经过研究,得到我的手脏的UIScrollView +的UITextView +自动调整版面,我顺利地拿到了一个完全工作的UIScrollView几天。我想分享我的解决方案,以防万一有人可能会停留在相同的情况。

  1. 添加的UIScrollView在故事板的主视图内
  2. 添加的UIView在里面的UIScrollView
  3. 添加的UITextView了UIView内(在步骤2中添加的视图)
  4. 确保“启用滚动”的UITextView的未被选中
  5. 上的UIScrollView添加4个约束(前置,顶部,底部)
  6. 上的UIView添加4个约束(前置,顶部,底部)(视图在步骤2中添加的)
  7. 添加“宽度同样”约束上的UIView(在步骤2中添加的视图)和主视图
  8. 上的UITextView添加5个约束(前置,顶部,底部,高度)。这一步后,你不应该得到任何约束错误和警告。
  9. 添加UITextView的高度约束IBOutlet中的视图控制器。 @property (nonatomic, weak) IBOutlet NSLayoutConstraint *textViewHeightConstraint;并在故事板连接
  10. 以编程方式更改UITextView的高度约束。 self.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, CGFLOAT_MAX)].height;

所有这些10个步骤后,你会得到与UITextView的内部完全正常的UIScrollView和快乐。


7
投票

看来,这个问题有一个已经为一些人工作的答案。但是,应该指出的是,documentation指出:

配售滚动视图的内部文本视图。文本视图处理自己滚动。你不应该在滚动视图中嵌入文本视图对象。如果这样做,可能会导致意外的行为,因为这两个物体的触摸事件可以混合起来,并错误地处理。

之前,试图把一个UITextViewUIScrollView你应该考虑,如果这是真的有必要。如果文本视图为滚动视图中的复杂布局的一部分,然后记在接受的答案使用UIView容器。

参见:Scroll Views Inside Scroll Views


3
投票

如果您发现自动布局仍抱怨UIScrollView-的高度

这里的问题是,默认情况下的UITextView已经选中了“启用滚动”的IB。

所以发现复选框,并取消它。

enter image description here


1
投票

我已经工作示例如何计算高度的UITextView动力高度+这里面UIStackView这是里面的UIScrollView这里:https://github.com/fassko/ScrollStackViewExample


0
投票

上述Sodbileg的解决方案的工作,但你并不需要所有的他的脚步。我得到了我的滚动视图与文本视图滚动内按照自己的步骤,通过步骤7对于步骤8,我加了4个约束,但不是高(不要忘了底部约束!!)。我没有做休息。

我不知道,但似乎TextView的高度自动调节,而不是我们不必手动更改。

© www.soinside.com 2019 - 2024. All rights reserved.