1

画面に UITextView を作成する必要があるアプリケーションを作成しています。TextView の高さと幅は、ユーザーが入力するにつれて増加し続ける必要があります。つまり、TextView の高さと幅は、そのコンテンツに応じて変化する必要があります。

ただし、myTextView.ContentSize.heightを介して TextView の高さを制御できました。しかし、内容に応じて TextView の幅を制御する方法が見つかりませんでした。

myTextView.contentSize.widthでもうまくいきません。

UITextViewのtextViewDidchangeデリゲートメソッド内ですべてのフレーム計算を行っています。

助言がありますか??

4

1 に答える 1

1

ではtextViewDidChange

CGSize constraintSize; 
CGSize labelSize; 

constraintSize = CGSizeMake(myTextView.frame.size.width, 480); 

NSString    *text   =   myTextView.text;
text                =   [text stringByTrimmingCharactersInSet: [NSCharacterSet newlineCharacterSet]];
text                =   [text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

if([text stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding])
{
    text            =   [text stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
}

// Note that in the below line you must use the font as exact as you use for textview

labelSize           =   [text sizeWithFont:[UIFont systemFontOfSize: 16] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

で、labelSizeテキスト ビューの予想サイズを確認できます。のフレームを次のように設定できmyTextViewます

myTextView.frame    =   CGRectMake(myTextView.frame.origin.x,myTextView.frame.origin.y,labelSize.width,labelSize.height);

これでうまくいくと思います。それを試してみてください。お役に立てれば。

于 2012-08-07T10:34:02.400 に答える