NSCollectionView 在 selectable=YES 时窃取焦点

Posted

技术标签:

【中文标题】NSCollectionView 在 selectable=YES 时窃取焦点【英文标题】:NSCollectionView stealing focus when selectable=YES 【发布时间】:2013-08-30 01:35:28 【问题描述】:

我在 Interface Builder 中创建了一个 NSView,其中包含两个控件,一个 NSCollectionView 和一个 NSTableView。当我的应用程序运行并将此视图附加到窗口时,焦点将正确设置在我的表格视图上并突出显示相应的行。但是,只要我打电话

[collectionView setSelectable:YES];

焦点将跳转到我的 NSCollectionView 并远离 tableview。让焦点回到我的表格视图的唯一方法是用鼠标单击它。

以下代码行都不起作用

[tableView becomeFirstResponder];
[[self.view window] makeFirstResponder:tableView];

有人有什么想法吗? 如果我在 IB 中也将集合视图设置为可选,则会发生这种情况。

【问题讨论】:

【参考方案1】:

好的,这段代码似乎“修复”了它,但它仍然看起来像一个可怕的 hack。我注意到,如果我在一段时间后将其设置为可选,它不会窃取焦点,所以现在我这样做了

-(void) loadView 
    [super loadView];
    [self performSelector:@selector(responderFix) withObject:nil afterDelay:0];

-(void) responderFix 
    [collectionView setSelectable:YES];

【讨论】:

以上是关于NSCollectionView 在 selectable=YES 时窃取焦点的主要内容,如果未能解决你的问题,请参考以下文章

NSCollectionView 中的居中项目

带有网络图像的 NSCollectionView

有没有办法在Swift中以编程方式设置NSCollectionView?

NSCollectionView 是不是与 CoreData 兼容

NSCollectionView`validdrop`委托没有被调用

在 NSCollectionView 中禁用 PDFView 的滚动