在 NSTableView 中取消选择一行需要时间

Deselection of a row taking time in NSTableView

我在显示 NSTableView 的应用程序中遇到了问题。此 table 视图显示了 NSButtonCell 作为整个 NSTableColumn 的 DataCell 的行列表。在尝试了很多方法来找到延迟的根本原因之后,我放弃了并创建了一个最小的项目,只有一个 NSTableView 显示包含 "Hi" 文本的行列表。我很惊讶地发现此应用程序中也存在延迟。

已尝试用例: 我使用 Cmd 并单击鼠标选择了其中的 4 行。然后我在没有使用 Command 的情况下从先前选择的行列表中只选择了一行。后面的动作需要2-4秒才能反应过来。 10.8.5 OSX 中为 4 秒,10.11.6 中为 2 秒 OSX

将代码复制到这里供您参考-

@implementation AppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    [self.tableView setDelegate:self];
    [self.tableView setDataSource:self];    
    [self.tableView setAllowsMultipleSelection:YES];
    [self.tableView setAllowsEmptySelection:YES];
}

#pragma mark - Table View -

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    return @"Hi";
}

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
    return 10;
}

@end

请帮助我解决此延迟问题或建议使用其他方法来立即执行此操作。

取消选择一行所花费的时间等于我们系统偏好设置中配置的双击速度。

我已经提交了一个 apple bug 并了解了这一点。在我的系统中,双击间隔设置为较长时间,因此 table 视图中的取消选择也需要相当长的时间。

非常感谢苹果,也想分享这个,因为你不会浪费时间调试它。