2010-12-05 9 views
2

NSTextFieldのフィールドエディタとして使用したいNSTextViewがあります。NSCellのfieldEditorForViewを呼び出す方法:カスタムフィールドエディタを割り当てるには

カスタムフィールドエディタを使用していないビュー内の他のNSTextFieldsがあるだろうので、しかし、私はこれを呼び出す方法の周りに私の脳をラップすることはできませんNSCellの人の方法

- (NSTextView *)fieldEditorForView:(NSView *)aControlView 

を使用する必要がありそうです使用中の例は見つかっていません。

カスタムフィールドエディタ を必要とする細胞を含むビュー:

NSCellののドキュメントは、「aControlView」であると言います。

NSTextField(NSViewのサブクラス)ではなく、このNSTextFieldのビューを意味します。しかし

NSView *viewTheTextFieldIsIn; 
CustomTextView *customTextView subclass of NSTextView (the field editor) 
NSTextField *textField 

[[textField cell] fieldEditorForView:customTextView]; 

は、そのないviewForFieldEditor: ...しかし、そのNSCellの上の私には意味がありません。

誰かが私に慈悲を与えて、私の考えを邪魔しないだろうか?

+0

私はfieldEditorを使ってテキスト補完を提供しています。クラスはこれをテキストビューとして正しく提供しますが、1行のテキストビューはNSTextFieldの外観に似ていないので、NSTextFieldのフィールドエディタとして使用することをお勧めします。 – lulu

答えて

-1

私はそれが今理解していると思うので、私はアーカイブのためにこれに答えると思った。 (何が睡眠するのか驚く)。

特定のメソッド呼び出しの使用量が指定できます

CustomTextView *customTextView = (CustomTextView *)[[self.textField cell] fieldEditorForView:self.textField]; 
[customTextView doSomeOtherStuffWithIt]; 

customTextViewは、ウィンドウのデリゲートメソッドを使用してfieldEditorとして使用することができます。

-(id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)client 

クライアントは、TextFieldことができる場所。

次に、textFieldのfieldEditorForViewを呼び出すと、そのCustomTextViewが返されます。

+0

私はそれを理解しているので、メソッドを自分で呼び出すことはありません。ドキュメントは、 "これは、独自のカスタムフィールドエディタを使用するように設計されたNSCellサブクラスのオーバーライドポイントです。このメッセージは、fieldEditor:forObject:のNSWindowメソッドを使用して、aControlViewの選択されたセルに送信されます。 –

+1

また、NSCellの-fieldEditorForViewドキュメントは、 "このメソッドからnil以外の値を返すと、windowWillReturnFieldEditor:toObject:delegationなどのプロセスを照会する標準フィールドエディタをスキップしていることを示します。言い換えると、-fieldEditorForViewを実装することによって、ウィンドウデリゲートメソッドは呼び出されません。 –

+0

プレストンさん、私の間違った答えを取り除いてくれてありがとう。私が今できることは、ウィンドウのデリゲートメソッドを使ってフィールドのアイデンティティをチェックし、別のフィールドエディタとしてサブクラス化された 'NSTextView'を返すことです。これは機能しているようです。 – lulu

関連する問題