gpt4 book ai didi

cocoa - 如何阻止 NSCollectioView 的 SelectionIndexes 在 mouseDown 和 mouseUp 上发出通知

转载 作者:行者123 更新时间:2023-12-03 17:23:38 24 4
gpt4 key购买 nike

我正在观察 NSCollectionView 实例的“selectionIndexes”,如下所示:

[self.collectionView addObserver:self forKeyPath:@"selectionIndexes" options:0 context:nil];

然后我响应observeValueForKeyPath: 中的更改,如下所示:

if(object == self.collectionView)
{
if([keyPath isEqualToString:@"selectionIndexes"])
NSLog(@"selectionIndexes CHANGED");
}

我注意到,如果我单击某个项目,我会收到两个通知,一个用于鼠标按下事件,另一个用于鼠标松开事件。这两次selectionIndexes 属性都返回项目的索引。您甚至可以缓慢地单击、向下暂停并观察日志中的两次不同的触发。

这看起来不正常,我该如何阻止它?单击 NSCollectionItem 时是否有更好的方式收到通知?

更新:我发现它被触发了两次,因为我还清除了observeValueForKeyPath中的选择:

if(object == self.collectionView)
{
if([keyPath isEqualToString:@"selectionIndexes"])
{
NSLog(@"selectionIndexes CHANGED");
[self.collectionView setSelectionIndexes:nil];
}
}

出于某种原因,NSCollectionView 发现它的选择在项目的鼠标向上事件中设置为 nil,并且它重置了选择索引。仍然不确定我想如何解决这个问题,因为我确实需要将选择设置回零。

最佳答案

要设置空选择,请将 selectionIndexes 设置为空 NSIndexSet,如下所示:

[self.collectionView setSelectionIndexes:[NSIndexSet indexSet]];

关于cocoa - 如何阻止 NSCollectioView 的 SelectionIndexes 在 mouseDown 和 mouseUp 上发出通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13404746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com