0

私が使用するときNSTextViewは、提案のリスト、メソッドcomplete:、または F5 キーを押すことで、オートコンプリート ポップアップを簡単にトリガーできます。

私は a と同じことをしようとしていNSTextFieldCellます。F5 は非常にうまく機能しますが、その方法complete:がないため、そのようなメニューをプログラムで開くことができません。それを解決する方法?

これは私が試したことです:

  1. NSTextFieldデリゲートメソッドを実装しますtextShouldBeginEditing:しかし、そのようなメソッドは、セルがフォーカスを取得したときではなく、キーが押された後にのみ呼び出されます

  2. becomeFirstResponderのサブクラスでオーバーライドしますが、NSTextFieldCellそのようなメソッドは呼び出されません。いずれにせよ、たとえそうであったとしても、前に述べたように、complete: メソッドはセル API の一部ではないため、実装方法がわかりません。

  3. 埋め込む

    - (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
    

    しかし、そのようなメソッドは、セルが編集モードに入る前に呼び出されます。また、ポイント 2 のように何をすべきかわかりません。

ありがとう

4

1 に答える 1

0

解決策:

をサブクラス化し、NSTextFieldCellこのメソッドをオーバーライドしてカスタマイズしますNSTextView

- (NSTextView *)fieldEditorForView:(NSView *)aControlView
{
    return [[[CBAutocompleteTextField alloc] init] autorelease];
}

NSTextView(私の場合) をサブクラス化し、CBAutocompleteTextFieldこれを追加して、フォーカスを取得したときにオートコンプリートをトリガーします。

-(BOOL)becomeFirstResponder
{
    [self performSelector:@selector(complete:) withObject:nil afterDelay:0.01];
    return YES;
}
于 2013-10-09T10:54:21.557 に答える