3

編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小限の実装は何ですか? これには NSTextFieldCell を使用できると思います。ビューでセルを描画することに成功しましたが (これは簡単です)、編集可能にするには、ビューとセルの間でより複雑な調整が必要なようです。サンプルコードはどこかにありますか?

アップデート。私の長期的な目標は、同じビュー上により多くの編集可能なテキスト領域を持つことであることを明確にするべきでした。知る限り、セルは本格的なビューよりも軽量であるため、その場合はセルを使用することをお勧めします。私の更新された質問は次のとおりです。適切な NSCell を使用して、編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小実装は何ですか?

4

3 に答える 3

1

テキストセルを編集したい場合はeditWithFrame:inView:editor:delegate:event:、セルオブジェクトを呼び出すだけです。このメソッドはNSEvent、編集を開始した を必要とするため、イベント ハンドラーからのみ呼び出すことができます。selectWithFrame:inView:editor:delegate:start:length:また、フィールド エディターを選択してセットアップするものもあります。イベント ハンドラーの外部から編集を開始する必要がある場合は、これを使用できます。

endEditing:ユーザーが編集を完了したら、セルを呼び出す必要があります。

于 2010-11-11T18:43:42.133 に答える
1

テキストフィールドのグリッドを作成したい場合 (動的な数で)、NSTextFieldCells の NSMatrix を使用します。もちろん、カスタム ビューのサブビューとして NSMatrix を追加することもできます。

于 2010-05-27T13:49:18.280 に答える
1

編集可能なテキスト領域を持つカスタム NSView を作成するために必要な最小限の実装は何ですか?

  1. NSView を作成します。
  2. その中に NSTextField を入れます。

NSView (カスタムまたはその他) には他の NSView を含めることができ、NSTextFieldは一種の NSView であることを思い出してください。

カスタム ビュー クラスの外部のコードにテキスト フィールドを認識させたくない場合 (また、認識すべきではない可能性が高い)、カスタム ビューでテキスト フィールドを作成し、非公開の実装の詳細としてそれ自体に追加することができます。これを行うには、カスタム ビュー クラスでテキスト フィールドを公開しないでください@interface(避けられないインスタンス変数の宣言は別として)。

もちろん、カスタム ビューは、テキスト フィールドをどこに置いても描画しないようにする必要があります。そこに描画することはできますが、テキスト フィールドがそれを覆ってしまいます。

これには NSTextFieldCell を使用できると思います。

はい、NSTextField の再実装を気にしないのであれば。ビューのサブビューとして NSTextField を追加する方がはるかに簡単です。

于 2010-05-27T10:14:36.483 に答える