3

我已经将 NSButton 和 NSButtonCell 子类化,我已经更改了图纸。现在对焦环不再出现在按钮上。我正在寻找一种在我的自定义按钮上绘制具有自定义颜色的对焦环的方法。

问题更新

4

2 回答 2

1

我不知道如何自己绘制焦点环(因此您可以使用自定义颜色),但是要让您的自定义按钮单元绘制焦点环,您通常只需要覆盖focusRingMaskBoundsForFrame:inView:就像这样:

- (NSRect)focusRingMaskBoundsForFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    return cellFrame;
}

如果这不能给你想要的结果,你可能需要通过实现drawFocusRingMaskWithFrame:inView:来额外提供一个掩码。在这种方法中,您基本上只需绘制应该添加对焦环的内容。可可为您完成其余的工作。

请注意,这些方法仅适用于 Mac OS X 10.7 Lion 及更高版本,但 Apple 表示现在应该这样做。

于 2012-12-03T13:34:41.133 回答
-2

您可以为自定义按钮类添加跟踪区域,然后您可以自定义按钮焦点。

-(void)awakeFromNib{
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.frame options:opts owner:self userInfo:nil];
[self addTrackingArea:trackingArea];
}

现在您可以在以下功能中进行自定义。

- (void) mouseEntered:(NSEvent*)event{
        //Add Custom Focus Ring
}

- (void) mouseExited:(NSEvent*)event{
        //Remove Custom Focus Ring
}
于 2012-10-09T14:34:42.500 回答