1

NSTextFieldインスタンスを使用してインプレーステキスト編集を行うグラフィックアプリがあります。この機能はずっと前に追加されたもので、チェックする理由はありませんでしたが、最近レポートを受け取りました。テキストを入力するとテキストが許可されません。フォーマット。[フォーマット]->[テキスト]メニューのサブアイテムはすべて無効になっているため、テキストアイテムの段落を設定する方法はありません。

質問:段落編集をサポートするようにNSTextFieldをどのように設定する必要がありますか?フォーマットされたテキストを使用するプロジェクトがいくつかあり、アプリが誕生してからNSTextFieldが存在していたので、以前は機能していたと確信しています。システム/XCodeのアップデートで何かを見逃しましたか?

私のNSTextFieldは複数行で編集可能であり、テキスト属性を編集できます。

4

1 に答える 1

3

誰かが将来これに直面する場合、私は問題を詳細に説明することができます:

  1. ルーラーが使用されていない場合、NSTextViewはフォーマットの適用を拒否します(最近のOSアップデートではおそらく)
  2. NSTextField自体はテキスト編集を行わず、所有するNSWindowによって駆動される共有NSTextViewインスタンスを使用します
  3. NSWindowのデフォルトのテキストエディタはルーラーを使用しません。

この結果、NSTextFieldを使用するとテキストの書式設定が無効になります。

解決策は、NSWindowをサブクラス化することです。

@implementation MyWindow

- (NSText *)fieldEditor:(BOOL)createWhenNeeded forObject:(id)anObject
{
    NSText* text = [super fieldEditor:createWhenNeeded forObject:anObject];
    if ([text isKindOfClass:[NSTextView class]])
        [(NSTextView *)text setUsesRuler:YES];
    return text;
}

@end

そして出来上がり、フォーマットが戻ってきました。

于 2010-09-01T15:17:22.493 に答える