NSCollectionView单选不起作用,但是多选很好 [英] NSCollectionView single selection is not working, but multiple selection is fine
问题描述
如标题所述,单选时,我的 NSCollectionView 不起作用.
As title described, my NSCollectionView is not working when single selection.
正确显示MyNSCollectionView,
MyNSCollectionView is rendered correcttly,
下面的代码显示了如何初始化NSCollectionView:
below code shows how I initialize my NSCollectionView:
self.leftBar.dataSource = self
self.leftBar.delegate = self
self.leftBar.isSelectable = true
self.leftBar.allowsEmptySelection = true
let layout = NSCollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.itemSize = NSSize(width: 200 , height: 50)
leftBar.collectionViewLayout = layout
self.contentView.addSubview(leftBar)
leftBar <- [
Top(),
Left(),
Bottom(),
Width(200)
]
自定义NSCollectionViewItem
Custom NSCollectionViewItem
class LeftBarCell: NSCollectionViewItem {
var leftBarView : LeftBarView?
override func loadView() {
leftBarView = LeftBarView(frame: NSZeroRect)
view = leftBarView!
}
func setup(title : String){
leftBarView?.titleTextView.string = title
}
}
在LeftBarView
In LeftBarView
class LeftBarView: NSView {
lazy var titleTextView : NSTextView = {
let titleTextView = NSTextView()
titleTextView.isEditable = false
titleTextView.isSelectable = false
titleTextView.font = NSFont(name: "Helvetica", size: 20)
return titleTextView
}()
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
self.setupViews()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
func setupViews(){
self.addSubview(titleTextView)
self.wantsLayer = true
self.layer?.backgroundColor = NSColor.lightGray.cgColor
titleTextView <- Edges()
}
}
我尝试玩
self.leftBar.isSelectable = true
leftBar.allowsMultipleSelection = true
,并且多项选择有效.触发了 NSCollectionViewDelegate
中的 didSelectItemsAt
and multiple selection is working.
The didSelectItemsAt
from NSCollectionViewDelegate
is triggered
但是当我尝试使用
self.leftBar.isSelectable = true
或
self.leftBar.isSelectable = true
self.leftBar.allowsEmptySelection = true
当我单击collectionviewitem时,它不起作用,未触发 NSCollectionViewDelegate
中的 didSelectItemsAt
.
It is not working when I click on the collectionviewitem,
The didSelectItemsAt
from NSCollectionViewDelegate
is not triggered.
任何想法都将不胜感激,谢谢!
Any thoughts would be appreciated, thanks!
推荐答案
已解决.这是因为textview覆盖了单元格,您可能需要禁用textview才能使其变为被动状态.
Solved. This is because the textview covers the cell, u might need to disable the textview to become passive.
extension NSTextView {
open override func hitTest(_ point: NSPoint) -> NSView? {
return nil
}
}
这篇关于NSCollectionView单选不起作用,但是多选很好的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!