4

同様の投稿がいくつかあることは理解していますが、私にはうまくいかないようです。

メッセンジャーアプリと同じように動作させたい uitextview があります。

自動レイアウトと [textview setScrollEnabled:NO] を使用して、uitextview をキーボードの上で動的に拡張できるようにしました。もちろん、画面上部まで伸びていきます。成長が止まると、追加のテキストが表示されなくなります。

textViewDidChange 内で成長が止まる高さを見つけようとして [textView setScrollEnabled:YES] を呼び出しましたが、成長する前に元のサイズに戻りました。

特定の高さに達したとき、またはそれ以上大きくなったときにスクロールを有効にするにはどうすればよいですか?

4

4 に答える 4

1

textView に ContentSize を設定しようとしましたか? 自動レイアウトが完了するのを待ちたい場合は、viewDidLayoutSubviews でそれを行うことができます。

ここに役立つリンクがあります:ユーザーがスクロールを開始したとき、またはテキストビューをタップしたときに、テキストビューのスクロールビューのコンテンツサイズをすぐに設定する方法

注:これはコメントである必要がありますが、私はそれについて十分な評判を持っていません...

于 2014-12-03T13:07:24.860 に答える
0

画面の上部から目的の距離に達したら、テキスト ビューに高さの制約を追加します。こんなことしてきたのに、

-(void)textViewDidChange:(UITextView *)textView {
    if (textView.scrollEnabled == NO) {
        if (textView.frame.origin.y < 50) {
            [textView addConstraint:[NSLayoutConstraint constraintWithItem:textView attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:textView.frame.size.height]];
            textView.scrollEnabled = YES;
        }
    }
}

テキスト ビューがビューの上部から 50 ポイント以内になると、現在の高さと同じ高さの制約が適用されます。

于 2014-12-03T17:09:23.013 に答える
0

それは研究であり、ここにあなたのためのリードがあります.

  1. テキスト ビューをサブクラス化します。

  2. contentSize の変更を監視します。おそらく、上書きできるセッターがあるか、単に KVO が機能する可能性があります。

  3. 自動レイアウト制約を更新するためにコントローラーに ping を返すテキスト ビュー デリゲートを作成します。

  4. contentSize が定義した最大値に達したら、単純に値をクランプして、テキスト ビューを自然にスクロールさせます。

于 2014-12-03T13:47:05.603 に答える