当用户将鼠标悬停在NSScroller上时,它会自动扩展其宽度。



但是,文档视图的空间很小,这就是滚动条不应展开的原因。

如何禁用此行为?

最佳答案

这也许为时已晚,但是这样可能有所帮助?

1)为您的垂直滚动条创建自定义滚动条。

2)覆盖-drawKnob以强制将绘制旋钮设为默认大小,即使将其“展开”也是如此。

-(void)drawKnob
{
    NSRect knobSlot = [self rectForPart:NSScrollerKnob];
    if(sFlags.isHoriz)
    {
        knobSlot.size.height = 9;
        knobSlot.origin.y = 6;
    }
    else
    {
        knobSlot.size.width  = 9;
        knobSlot.origin.x = 6;
    }

    NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:knobSlot xRadius:5 yRadius:5];

    [[NSColor scrollBarColor] set];
    [path fill];
}


3)根据是否仍然需要旋钮插槽,覆盖-drawKnobSlotInRect:

-(void)drawKnobSlotInRect:(NSRect)slotRect highlight:(BOOL)flag
{
    NSRect newRect = slotRect;
    if(sFlags.isHoriz)
        newRect.origin.y = 4;
    else
        newRect.origin.x = 4;
    [super drawKnobSlotInRect:newRect highlight:flag];
}

09-12 00:28