应用启动时,键盘专注于NSCollectionView

时间:2018-03-29 21:06:34

标签: swift macos nscollectionview

当我的Mac App启动或切换标签时,我正在尝试将键盘焦点放在我的NSCollectionView上。我已经尝试将它作为第一个响应者,它说它是我测试的时候,但是我必须在集合视图中单击才能使用箭头键来浏览集合视图项。

@IBOutlet weak var collectionView: NSCollectionView!

override func viewDidAppear() {
    self.collectionView.item(at: 0)?.isSelected = true
    self.collectionView.becomeFirstResponder()
}

我也尝试将它放在viewDidAppear覆盖中,但没有骰子。

有人有同样的问题吗?你是怎么绕过它的?

2 个答案:

答案 0 :(得分:1)

根据我的经验,除非已选择一个项目,否则NSCollectionView不允许您使用箭头键进行导航。因此,我通过子类化NSCollectionView.becomeFirstResponder()并在未选择任何内容时手动选择了第一个可用项目来做到这一点。

class MyCollectionView: NSCollectionView {

    override func becomeFirstResponder() -> Bool {
        if selectionIndexPaths.count == 0 {
            for section in 0..<numberOfSections {
                if numberOfItems(inSection: section) > 0 {
                    selectionIndexPaths = [IndexPath(item: 0, section: section)]
                    break
                }
            }
        }
        return super.becomeFirstResponder()
    }
}

答案 1 :(得分:0)

我这样做了

id   sup_id    cp_id    max       bal 
---- --------- ------- --------  ---
1     79        4      10          2     
3     79        23     10          1
4     79        2      10          3

NSCollectionView以这种方式获得焦点。 (在Mac OS 10.15.4上测试)。 当后端收到响应时,我重新加载了数据。