0

我有一个NSSplitView这样的委托方法:

- (void)splitViewWillResizeSubviews:(NSNotification *)aNotification
{
    NSLog(@"RESIZE!");
}

每当我拖动分隔线时都会调用此方法,因此它已正确注册。我想从另一个对象调用它,并正在考虑使用它:

[[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewWillResizeSubviewsNotification object:self];

根据 Apple 文档,这是应该发送以调用委托方法的通知。但是,它不起作用。有谁知道我做错了什么?

4

2 回答 2

1

您可以手动调用该方法

NSSplitView * yourSplitView; //Get reference to your splitview
id yourSplitViewDelegate = [yourSplitView delegate];
[yourSplitViewDelegate splitViewWillResizeSubviews:nil];//Optionally create the NSNotification with relevant data

如果您真的想通过通知中心,请确保self您的问题是 NSSplitView。

NSSplitView * yourSplitView; //Get reference to your splitview
[[NSNotificationCenter defaultCenter] postNotificationName:NSSplitViewWillResizeSubviewsNotification object:yourSplitView];
于 2013-03-29T18:25:13.743 回答
0

原来我需要手动注册NSSplitViewWillResizeSubviewsNotification通知的委托类!

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(splitViewWillResizeSubviews:)
                                                 name:NSSplitViewWillResizeSubviewsNotification
                                               object:vc];

其中 vc 是应该发送通知的视图控制器。

这是出乎意料的行为(对我来说),因为<NSSplitViewDelegate>预计会自动注册NSSplitView...通知。

于 2013-03-30T06:39:55.227 回答