不调用NSSplitView委托方法

时间:2014-09-30 10:04:44

标签: objective-c macos cocoa nssplitview

我正在尝试修复NSSplitView中的分隔符。在http://www.cocoabuilder.com/archive/cocoa/202611-fixed-width-of-pane-in-nssplitview.html找到了它是如何完成的 希望它能正常工作,但我甚至无法测试......

我[希望]通过执行以下代码行来为我的SplitView类设置委托:

[self.mySplitView setDelegate:self.mySplitView];

SplitView类实现也在实现委托,如下所示:

@interface PanelSplitView : NSSplitView <NSSplitViewDelegate>

在Objective-C实现中,我有以下方法:

-(void)splitView:(NSSplitView *)sender resizeSubviewsWithOldSize:(NSSize)oldSize
{
    NSLog(@"Resizing SplitView subviews");

    CGFloat dividerThickness = [sender dividerThickness];
    NSRect leftRect  = [[[sender subviews] objectAtIndex:0] frame];
    NSRect rightRect = [[[sender subviews] objectAtIndex:1] frame];
    NSRect newFrame  = [sender frame];

    leftRect.size.height = newFrame.size.height;
    leftRect.origin = NSMakePoint(0, 0);
    rightRect.size.width = newFrame.size.width - leftRect.size.width
- dividerThickness;
    rightRect.size.height = newFrame.size.height;
    rightRect.origin.x = leftRect.size.width + dividerThickness;

    [[[sender subviews] objectAtIndex:0] setFrame:leftRect];
    [[[sender subviews] objectAtIndex:1] setFrame:rightRect];
}

由于没有日志输出,我知道永远不会调用该方法。 我知道在同一个类中实现View和Delegate可能并不常见,但我之前已经完成了它,并且它每次都有效,到目前为止。 请告知我可能做错了什么。

谢谢

1 个答案:

答案 0 :(得分:0)

看来我不明白[新] NSSplitView是如何工作的和/或修改分隔符位置的人的意思。 在调整SplitView的大小时会调用委托方法,但是在拖动分隔符时则不会。 感谢您阅读我的问题。