Cocoa 永远不会调用collectionView(u3;:didDesceleitemsat:)

Cocoa 永远不会调用collectionView(u3;:didDesceleitemsat:),cocoa,delegates,mouseevent,appkit,nscollectionview,Cocoa,Delegates,Mouseevent,Appkit,Nscollectionview,出于某种原因,我的NSCollectionView(它使用我编写的自定义布局)在单击某个项目时调用其代理的collectionView(\uuxDidSelectItemSat:)函数,但在我单击它时调用的不是同一个代理的collectionView(\uxDidDecelectItemSat:) 以下是我的基本设置: class MyCollectionViewContainer: NSViewController { fileprivate lazy var collectionVi

出于某种原因,我的
NSCollectionView
(它使用我编写的自定义布局)在单击某个项目时调用其代理的
collectionView(\uuxDidSelectItemSat:)
函数,但在我单击它时调用的不是同一个代理的
collectionView(\uxDidDecelectItemSat:)

以下是我的基本设置:

class MyCollectionViewContainer: NSViewController {
    fileprivate lazy var collectionView: NSCollectionView = {
        let collectionView = NSCollectionView()
        collectionView.delegate = self
        collectionView.dataSource = self

        collectionView.collectionViewLayout = self.customLayout
        collectionView.isSelectable = true
        collectionView.allowsEmptySelection = true
        collectionView.allowsMultipleSelection = false
    }()
}

extension MyCollectionViewContainer: NSCollectionViewDelegate {

    func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {

        print("Selected", indexPaths)

        // Mutate data to reflect that selection
    }

    func collectionView(_ collectionView: NSCollectionView, didDeselectItemsAt indexPaths: Set<IndexPath>) {
        print("Deselected", indexPaths)
    }
}
类MyCollectionViewContainer:NSViewController{
fileprivate lazy var collectionView:NSCollectionView={
让collectionView=NSCollectionView()
collectionView.delegate=self
collectionView.dataSource=self
collectionView.collectionViewLayout=self.customLayout
collectionView.isSelectable=true
collectionView.allowsEmptySelection=true
collectionView.allowsMultipleSelection=false
}()
}
扩展名MyCollectionViewContainer:NSCollectionViewDelegate{
func collectionView(collectionView:NSCollectionView,didSelectItemsAt IndExpath:Set){
打印(“选定”,索引路径)
//改变数据以反映该选择
}
func collectionView(collectionView:NSCollectionView,DidDecelectItemSat IndExpath:Set){
打印(“取消选择”,索引路径)
}
}

“取消选择”从不打印…:/

所以我的布局没有添加任何类型的补充视图;显然,这是collection视图在您单击某个项目时用来检测的视图。我的快速解决方案是在我的布局中添加一个巨大的集合视图,并使其Z索引低于所有其他项目和补充视图的Z索引。

我们需要将NSCollectionView项目设置为选中:

 collectionview.isSelectable = true

相关:这似乎只是我的问题中的一行代码。我的代码也有同样的问题,所以在上面的代码行的帮助下,我的问题已经解决了。这时,你应该问一个新问题,发布你的错误代码,并用你找到的修复方法回答它。你的回答对我的问题没有帮助。这个问题是错误的。如果你在这里发布了正确的HTML代码,这个问题仍然是错误的。不同问题的症状是相同的。