2016-04-25 6 views
0

OSXのサンプルアプリケーションを開発中です。私は、ユーザーがテキストを入力して編集できるテキスト領域が必要です。私は、文字数が増えるにつれてテキスト領域を大きくしたいので、テキスト領域をスクロール可能にし、一定の長さを超えて拡大した後にその高さを固定したい。私はこの目的のためにNSTextFieldを使用しています。しかし、私はそれをスクロール可能にすることができません。また、私はこの目的のためにスクロールビュー内でスクロール可能なNSTextViewを使ってみました。 NSTextFieldでは、Interface Builderを使用してフォントとフォントサイズを設定できません。NSTextFieldをスクロール可能にする

+0

NSTextFieldはスクロール可能ではありません(あなたが発見したように)。それは1行だけです。 NSTextViewは、あなたが達成しようとしているものに対する正しいビューです。あなたはNSTextViewがあなたにとってうまくいかないとは言いません。より具体的にできますか?おそらく、あなたがやっていることを見ることができるようにいくつかのコードを投稿してください。 – headbanger

+0

@headbanger基本的には、NSTextViewがテキストの増加に伴って増加するが、ある程度の高さまで増加したい。その後、私はスクロールしたい。どうすればこれを達成できますか?とにかく、実行時にNSTextViewに必要な高さを計算できますか? – hcnimkar

答えて

0

最初に、あなたが特定したように、テキストの高さを計算する必要があります。 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html

NSTextViewのフレームまたは制約(自動レイアウトを使用している場合)を変更して、サイズをあらかじめ定義された最大値に調整する必要があります。

私があなただったら、NSTextViewをサブクラス化し、keyDownをオーバーライドして、テキストが変更されるたびにサイズが再計算されるようにします。はい、それは最も効率的な解決策ではないかもしれませんが、余裕があります。それは簡単な修正です。

フォントの設定に関しては、フォントをテキストストレージに設定する必要があります。ビュー上では設定しないでください。これはその方法です:

[textview.textStorage setFont:[NSFont fontWithName:@"Helvetica" size:12]]; 

これはうまくいかない場合は、動作していないコードを投稿できますか?

+0

はいありがとう:)私はそれを行う – hcnimkar

+0

私はNSTextViewのフォントを変更することができません – hcnimkar

+0

NSTextViewのサブクラスの代わりに、私はデリゲートを使用し、 'textDidChange:'を実装します。テキストが変更されるとNSTextViewが大きくなります。スクロールビューのサイズを変更する必要があります。 – Willeke

関連する問題