代码之家  ›  专栏  ›  技术社区  ›  Trygve

NSTableView中NSTextFieldCell的字段编辑器中的焦点环

  •  0
  • Trygve  · 技术社区  · 7 年前

    我有一个基于单元格的NSTableView,在特定列中有一个文本单元格。我想提供一个自定义字段编辑器,这样我就可以在不需要用户按F5键的情况下自动完成。

    @implementation AutoCompleteFieldEditorTextView
    
    -(id)init
    {
        self = [super init];
        if (self)
        {
            self.focusRingType = NSFocusRingTypeDefault;
            self.fieldEditor = YES;
        }
        return self;
    }
    
    @end
    

    这工作正常,除了焦点环不存在。即使我加上:

    -(void)drawFocusRingMask
    {
        NSRectFill([self bounds]);
    }
    
    -(NSRect)focusRingMaskBounds
    {
        return [self bounds];
    }
    

    它仍然不起作用。如何获取默认NSTextView用作NSTableView中字段编辑器时出现的精确焦点环?

    1 回复  |  直到 7 年前
        1
  •  1
  •   toohtik    6 年前

    有同样的问题,为了解决我正在使用下一种方法。此方法在自定义NSTextFieldCell中重载,该方法创建并返回自定义NSTextView:

    - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
    {
          [super drawInteriorWithFrame:cellFrame inView:controlView];
    
          if([controlView.window firstResponder] == self.maskTextField)
          {
             [super drawFocusRingMaskWithFrame:cellFrame
                                        inView:controlView];
          }
    }
    

    希望这对将来有帮助。