2017-09-05 56 views
1

我有一个窗口有3个NSTableViews和1个NSCollectionView。 collectionview显示图像。我希望能够选择其中一个图像并使用键盘删除键将其删除,但我无法使collectionview成为第一响应者。我可以选择任何tableviews并覆盖keyDown来接受键盘输入,但这不适用于collectionview。我在其他地方使用makeFirstResponder(_ :)来强制关注collectionview,但在该应用中该窗口只有一个视图。任何想法我做错了什么?NSCollectionView将不接受关键事件

回答

0

如果您可以在集合视图中选择图像或使用键盘上的箭头键在集合视图中导航 - 通常意味着集合视图是firstResponder。

因此,请尝试启用选择,检查是否启用了集合视图。

删除键也可能是等价键 read more here。如果是的话,你应该重写performKeyEquivalent(with:)方法来接收这种类型的事件

此外,NSCollectionView keyDown(with:)方法不会将关键事件传递给响应者链。要在超级视图中处理这些事件,您应该在集合视图中通过调用self.nextResponder?.keyDown(with: event)来覆盖您想要自行处理的事件。