Cocoa:停止按空格键自动完成字段编辑器

Cocoa:停止按空格键自动完成字段编辑器,cocoa,autocomplete,subclass,nstextview,fieldeditor,Cocoa,Autocomplete,Subclass,Nstextview,Fieldeditor,我有一个带有多个NSTextField控件的自定义视图,我想为这些控件提供自定义自动完成,并且我已经使用NSTextFieldDelegate协议成功地实现了所有这些。自动补全是全名或地名,具体取决于正在编辑的文本字段 问题是,自动补全几乎总是包含空格字符,因此如果用户键入的内容与建议匹配,但不想接受该建议,则当用户按空格键时,字段编辑器将接受该建议。我希望字段编辑器仅使用tab键接受建议 我知道这将涉及子类化NSTextView,以提供自定义字段编辑器,这是一种可接受的方式,但是我不清楚我需要

我有一个带有多个
NSTextField
控件的自定义视图,我想为这些控件提供自定义自动完成,并且我已经使用
NSTextFieldDelegate
协议成功地实现了所有这些。自动补全是全名或地名,具体取决于正在编辑的文本字段

问题是,自动补全几乎总是包含空格字符,因此如果用户键入的内容与建议匹配,但不想接受该建议,则当用户按空格键时,字段编辑器将接受该建议。我希望字段编辑器仅使用tab键接受建议

我知道这将涉及子类化
NSTextView
,以提供自定义字段编辑器,这是一种可接受的方式,但是我不清楚我需要覆盖哪些方法以及被覆盖的方法需要做什么,以便得到我想要的


有人能提出这是如何实现的吗?

我承认,在魔法密码被公然从原始回答者那里偷走之前,我已经摸索了很久这个问题:

@interface MLFieldEditor : NSTextView @end

@implementation MLFieldEditor


-  (void)insertCompletion:(NSString *)word forPartialWordRange:(NSRange)charRange movement:(NSInteger)movement isFinal:(BOOL)flag {
    // suppress completion if user types a space
    if (movement == NSRightTextMovement) return;

    // show full replacements
    if (charRange.location != 0) {
        charRange.length += charRange.location;
        charRange.location = 0;
    }

    [super insertCompletion:word forPartialWordRange:charRange movement:movement isFinal:flag];

    if (movement == NSReturnTextMovement)
    {
        [[NSNotificationCenter defaultCenter] postNotificationName:MLSearchFieldAutocompleted object:self userInfo:nil];
    } }

@end

()

你能提供一个你描述的自动补全词类型的例子吗?@RobKeniger我已经编辑了我的问题。你去哪了,伙计?如果你不在路上的每一步都握住我的手,我就做不成事情好东西-我会试试,让你知道。“给莫蒂西亚一个吻吧!”我很乐意帮忙!别忘了赏金。:)抱歉-我以为这是自动的:)