当selectable = YES时,NSCollectionView窃取焦点

时间:2013-08-30 01:35:29

标签: objective-c cocoa nstableview nscollectionview nscontrol

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

[collectionView setSelectable:YES];

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

以下两行代码都不起作用

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

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

1 个答案:

答案 0 :(得分:2)

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

-(void) loadView {
    [super loadView];
    [self performSelector:@selector(responderFix) withObject:nil afterDelay:0];
}
-(void) responderFix {
    [collectionView setSelectable:YES];
}