0

当我使用时NSTextView,很容易触发带有建议列表、方法complete:或按 F5 的自动完成弹出窗口。

我正在尝试与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];
}

子类化NSTextViewCBAutocompleteTextField在我的情况下)并添加它以在获得焦点时触发自动完成:

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