当我的Mac App启动或切换标签时,我正在尝试将键盘焦点放在我的NSCollectionView上。我已经尝试将它作为第一个响应者,它说它是我测试的时候,但是我必须在集合视图中单击才能使用箭头键来浏览集合视图项。
@IBOutlet weak var collectionView: NSCollectionView!
override func viewDidAppear() {
self.collectionView.item(at: 0)?.isSelected = true
self.collectionView.becomeFirstResponder()
}
我也尝试将它放在viewDidAppear覆盖中,但没有骰子。
有人有同样的问题吗?你是怎么绕过它的?
答案 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上测试)。 当后端收到响应时,我重新加载了数据。