2017-01-20 4 views
0

Как описано выше, мой NSCollectionView не работает, когда один выбор.NSCollectionView одиночный выбор не работает, но множественный выбор в порядке

MyNSCollectionView визуализируется correcttly,

ниже код показывает, как я инициализировать мой 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

class LeftBarCell: NSCollectionViewItem { 

var leftBarView : LeftBarView? 

override func loadView() { 
    leftBarView = LeftBarView(frame: NSZeroRect) 
    view = leftBarView! 
} 

func setup(title : String){ 

    leftBarView?.titleTextView.string = title 
} 

}

В 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 

и множественный выбор работает. didSelectItemsAt от NSCollectionViewDelegate срабатывает

Но тогда, когда я пытаюсь с этим

self.leftBar.isSelectable = true 

или

self.leftBar.isSelectable = true 
    self.leftBar.allowsEmptySelection = true 

Это не работает, когда я нажимаю на collectionviewitem, didSelectItemsAt из NSCollectionViewDelegate является не срабатывает.

Любые мысли будут оценены, спасибо!

ответ

0

Решено. Это связано с тем, что текстовое покрытие охватывает ячейку, и вам может потребоваться отключить текстовое представление, чтобы оно стало пассивным.

extension NSTextView { 

open override func hitTest(_ point: NSPoint) -> NSView? { 
    return nil 
    } 
} 
Смежные вопросы