【问题标题】:Deselection of a row taking time in NSTableView在 NSTableView 中取消选择需要时间的行
【发布时间】:2016-12-20 11:56:54
【问题描述】:

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

用例尝试:我使用 Cmd 和鼠标单击选择了 4 行。然后我从先前选择的行列表中只选择了一行,而不使用命令。后面的动作需要 2-4 秒才能反映。在 10.8.5 OSX 中为 4 秒,在 10.11.6 OSX 中为 2 秒

复制代码在这里供您参考-

@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

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

【问题讨论】:

  • 你试过没有图片吗?
  • @Willeke 是的。我现在编辑了代码。问题依然存在。
  • 您是创建了一个新项目并将一个新的表格视图拖到窗口中,还是从现有项目的副本中删除了其他所有内容?
  • @Willeke .. 我创建了一个新项目,并没有重用我实际项目中的任何内容。如果你有时间,不妨试试,因为它不会花费你超过 10 分钟。
  • 我确实尝试过重现该问题,但它可以正常工作。

标签: cocoa nstableview multipleselection


【解决方案1】:

取消选择一行所用的时间等于我们系统首选项中配置的双击速度。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多