AutoLayoutを使用してUITextViewをUIScrollView内に配置しようとしています。私が試したのは、
self.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, FLT_MAX)].height;
UITextViewは高さを取得していますが、UIScrollViewはそうではありません。見逃したことはありますか?
数日間の調査と、UIScrollView + UITextView + Auto Layoutで手を汚した後、UIScrollViewが完全に機能するようになりました。誰かが同じ状況に陥る可能性がある場合に備えて、ソリューションを共有したいと思います。
@property (nonatomic, weak) IBOutlet NSLayoutConstraint *textViewHeightConstraint;
およびStoryboardで接続しますself.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, CGFLOAT_MAX)].height;
これらの10の手順をすべて実行すると、UITextViewを内部に備えたUIScrollViewが完全に機能し、満足します。
この質問には、多くの人にとって有効な答えがあるようです。ただし、 documentation の状態に注意する必要があります。
スクロールビュー内にテキストビューを配置します。テキストビューは独自のスクロールを処理します。スクロールビューにテキストビューオブジェクトを埋め込まないでください。そうすると、2つのオブジェクトのタッチイベントが混同され、誤って処理される可能性があるため、予期しない動作が発生する可能性があります。
UITextView
にUIScrollView
を配置する前に、これが本当に必要かどうかを検討する必要があります。テキストビューがスクロールビュー内の複雑なレイアウトの一部である場合、受け入れられた回答のUIView
コンテナの使用に注意してください。
私はUITextViewの動的な高さの高さを計算する方法の実用的な例を持っています+それはUIScrollViewの中にあるUIStackViewの中にあります: https://github.com/fassko/ScrollStackViewExample
上記のソドビレグのソリューションは機能しますが、彼のすべての手順が必要なわけではありません。彼のステップ7までの手順に従って、スクロールビューでテキストビューをスクロールしました。ステップ8では、4つの制約を追加しましたが、高さは追加しませんでした(下部の制約を忘れないでください!!)。残りはしませんでした。
よくわかりませんが、textviewの高さは手動で変更する代わりに自動的に調整されるようです。