私はCocoaのドキュメントベースのMacOSXアプリケーションを持っています。
私のアプリにある機能の1つは、ダブルクリックして編集できるテキストアイテムのリストです。ユーザーがテキストアイテムの1つをダブルクリックすると、現在のウィンドウのfieldEditor
テキストフィールドがクリックされたテキストアイテムの上に配置され、編集できるようになります。
1つの問題を除いて、すべてが正常に機能しています。テキストを折り返すのではなく、fieldEditor
テキストフィールドをクリップ+スクロールする方法がわかりません。現在の外観は次のとおりです。
テキストが2行目にどのように折り返されているかを確認しますか?私はそれを望んでいません。スクロールする(そしてクリップされて見える)1行のままにしておきたいのですが。
テキストの少ないリストアイテムで正しく機能する例を次に示します。
ビューコントローラで試していることは次のとおりです。
NSWindow *win = [listItemView window];
NSText *fieldEditor = [win fieldEditor:YES forObject:listItemView];
[fieldEditor setFont:[TDListItemView titleFont]];
[fieldEditor setAlignment:NSLeftTextAlignment];
[fieldEditor setDrawsBackground:YES];
[fieldEditor setBackgroundColor:[NSColor whiteColor]];
[fieldEditor setString:str];
[fieldEditor setDelegate:self];
[fieldEditor selectAll:nil];
if ([fieldEditor isKindOfClass:[NSTextView class]]) {
NSTextView *tv = (NSTextView *)fieldEditor;
NSMutableParagraphStyle *style = [[[tv defaultParagraphStyle] mutableCopy] autorelease];
[style setLineBreakMode:NSLineBreakByClipping];
[tv setDefaultParagraphStyle:style];
}
CGRect r = [self fieldEditorRectForBounds:[listItemView bounds] index:idx]; // height here is 10.0
[fieldEditor setFrame:r];
[fieldEditor setNeedsDisplay:YES];
[[self view] addSubview:fieldEditor];
[win makeFirstResponder:fieldEditor];
真ん中の部分に注意してください。メソッドを呼び出すために、これfieldEditor
がのインスタンスであるかどうかを確認します。これは、値を介してテキストをクリップするようにするための私の試みです。効果はありません。そして、これが1行でスクロールするために私がすべきことであるかどうかさえわかりません。NSTextView
setDefaultParagraphStyle:
fieldEditor
NSLineBreakByClipping
fieldEditor
また、私の-fieldEditorRectForBounds:index:
方法で計算した長方形の高さは正しく、1行のテキスト(この場合は14.0ピクセル)に対して正しいサイズの長方形を提供していることにも注意してください。
fieldEditor
スクロール/クリップされたテキストを1行表示するために何が欠けていますか?
また、中央のセクションにこれらの行を追加してみました。
[[tv textContainer] setHeightTracksTextView:YES];
[[tv textContainer] setWidthTracksTextView:YES];
これには、良好なの可視部分のサイズを変更するという望ましい効果がありますfieldEditor
。しかし、悪いニュースは、テキストがクリップされてスクロールされるのではなく、まだ折り返されているという事実が変わらないことです。:(
これは、この定数に関連しているようです。
NSStringDrawingUsesLineFragmentOrigin
options:
これは、次の引数で使用できます。
-[NSAttributedString drawWithRect:options:attributes:]
しかし、私の場合は、NSText
ではなくフィールドエディタで作業していNSAttributedString
ます。NSText
フィールドエディタでこの種のことを行う方法がわかりません。