1

SOでこれに関連する多くの質問を見てきましたが、私の質問には関係ありません。

メッセージ機能を備えたアプリを作成します。Apple にはメールがあり、LinkedIn にはアプリのメール機能があるのと同様に、UITableView3 行の が必要です。3 番目の行にはUITextView、ユーザーの入力に応じて拡大する必要がある があります。私のコードは以下の通りです:

- (void)textViewDidChange:(UITextView *)textView {
    if (bodyText.contentSize.height > currentContentHeight) {
        currentContentHeight = bodyText.contentSize.height;

        [tblView beginUpdates];
        [tblView endUpdates];

        [bodyText setFrame:CGRectMake(0, 0, 310.0, currentContentHeight)];

        bodyText.selectedRange = NSMakeRange(textView.text.length - 1, 0);

    } else {
        currentContentHeight = minimumContentHeight;

        [tblView beginUpdates];
        [tblView endUpdates];
    }
}

iPhone で Return キーを押すと、iPhone がダウンし、問題なく動作します。問題は、 の中央またはその他の中間部分に移動すると、 が正しくUITextView取得されないため、おかしな動作が発生するように見えることです。contentSize例えば:

  • リターンを10回押します
  • 5 行目に移動し、「dog」と入力します
  • それがcontentHeight理にかなっている場合、それはその5行目に基づいていますか?

現在、すべてのテキストに基づいて計算する方法はありますか? 上記で見逃したものがある場合はお知らせください。私は以下を広く読みました:

http://dennisreimann.de/blog/uitextview-height-in-uitableviewcell/

https://stackoverflow.com/questions/985394/growing-uitextview-and-uitableviewcell

UITableViewCell 内の UITextView

UITextView のサイズをそのコンテンツに合わせるにはどうすればよいですか?

4

1 に答える 1

2

私は上記のコードを次のように編集しましたが、それは私のために働いています:

- (void)textViewDidChange:(UITextView *)textView {    
    // Get the number of lines in the current view
    NSUInteger lines = textView.text.length;
    if ((lines * 25) > currentContentHeight && (lines * 25) >= minimumContentHeight && bodyText.contentSize.height > minimumContentHeight) {

        currentContentHeight = bodyText.contentSize.height;

    } else if (lines < 5){
        currentContentHeight = minimumContentHeight;
    }

    [tblView beginUpdates];
    [tblView endUpdates];

    [bodyText setFrame:CGRectMake(5, 5, 310, currentContentHeight)];

    bodyText.selectedRange = [bodyText selectedRange];
}

電話のサイズに基づいて、最初はにcurrentContentHeight等しい値を設定しました。minimumContentHeight

于 2013-01-19T20:19:15.560 に答える