我有一个习俗NSView
(这是众多习俗中的一个,它们都生活在一个NSCollectionView
——我认为这无关紧要,但谁知道呢)。当我单击视图时,我希望它更改其选择状态(并相应地重绘自身);当我双击视图时,我希望它为刚刚双击的对象弹出一个更大的预览窗口。
我的第一个看起来像这样:
- (void)mouseUp: (NSEvent *)theEvent {
if ([theEvent clickCount] == 1) [model setIsSelected: ![model isSelected]];
else if ([theEvent clickCount] == 2) if ([model hasBeenDownloaded]) [mainWindowController showPreviewWindowForPicture:model];
}
大部分工作正常。除了,当我双击视图时,选择状态发生变化并弹出窗口。这不正是我想要的。
好像我有两个选择。我可以在响应双击时恢复选择状态(撤消错误的单击),或者我可以找到某种NSTimer
解决方案以在响应单击之前建立延迟。换句话说,我可以确保在更改选择状态之前不会再次单击。
这看起来更优雅,所以这是我一开始采用的方法。我从 Google 中找到的唯一真正的指导是在一个名称中带有连字符的未命名网站上。这种方法主要适用于一个很大的警告。
悬而未决的问题是“我应该NSTimer
等多久?”。未命名的站点建议使用 Carbon 函数GetDblTime()
。除了在 64 位应用程序中无法使用之外,我能找到的唯一文档说它正在返回时钟滴答声。而且我不知道如何将这些转换为秒数NSTimer
。
那么这里的“正确”答案是什么?摸索GetDblTime()
?双击“撤消”选择?我无法弄清楚可可惯用的方法。