我正在开发一个 MAC 应用程序,我需要在其中获取用户开始调整 nstableview 列大小的事件。我知道有一个通知 columnDidResize。但是当我们结束调整列大小时它会被调用。
问问题
417 次
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 回答