1

我正在开发一个 MAC 应用程序,我需要在其中获取用户开始调整 nstableview 列大小的事件。我知道有一个通知 columnDidResize。但是当我们结束调整列大小时它会被调用。

4

2 回答 2

4

使用 KVO 通知解决了同样的问题。

将您的表委托设置为 NSTableColumn 宽度的观察者:

[column addObserver:self forKeyPath:@"width" options:0 context:nil];

可以调整选项参数以在实际更改发生之前获取通知。

然后在宽度发生变化时得到通知:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSInteger resizedColumn = tableView.headerView.resizedColumn;
    if (resizedColumn != -1)
    {
        if (object == column && 
            object == [tableView.tableColumns objectAtIndex:resizedColumn])
        {
            // User is resizing column
        }
    }
}
于 2013-04-15T21:31:47.123 回答
0

如@pointum 所示,使用KVO 可以工作。如果您遇到与注销观察者相关的麻烦,您可以执行我实际上最终要做的事情:子类 NSTableColumn 并覆盖 Width 参数的设置器并从那里发送通知。

于 2016-01-27T00:25:31.867 回答