如何爲用戶雙擊NSCollectionViewItem時設置操作。例如,NSTableView具有setDoubleAction方法。是否有類似的NSCollectionView?NSCollectionViewItem雙擊動作?
感謝
如何爲用戶雙擊NSCollectionViewItem時設置操作。例如,NSTableView具有setDoubleAction方法。是否有類似的NSCollectionView?NSCollectionViewItem雙擊動作?
感謝
你可能想在你的NSCollectionViewItem到處理這個問題,而不是NSCollectionView本身(上班了你的NSTableView的比喻)。
謝謝,我最終只是繼承了NSCollectionView的原型NSView並添加了一個mouseDown處理函數。 – indragie 2009-10-12 21:18:23
我知道這個問題很古老,但它現在是谷歌的第三個結果,我發現了另一個非常簡單的方法,我沒有在其他地方看到過。 (我不只需要操縱代表的項目,但在我的應用程序中有更復雜的工作。)
NSCollectionView繼承自NSView,因此您可以簡單地創建自定義子類並覆蓋mouseDown。這並非完全沒有缺陷 - 你需要檢查的點擊次數,並在主窗口中您的CollectionView的轉換點座標,使用NSCollectionView的indexPathForItem方法之前:
override func mouseDown(with theEvent: NSEvent) {
if theEvent.clickCount == 2 {
let locationInWindow = theEvent.locationInWindow
let locationInView = convert(locationInWindow, from: NSApplication.shared.mainWindow?.contentView)
if let doubleClickedItem = indexPathForItem(at: locationInView){
//handle double click - I've created a DoubleClickDelegate (my collectionView's delegate, but you could use notifications as well)
...
這種感覺就好像我終於找到蘋果打算使用的方法 - 否則,indexPathForItem(at :)沒有理由存在。
這[博客]:http://www.springenwerk.com/2009/12/double-click-and-nscollectionview.html將幫助你。 – user1377049 2012-05-07 14:33:34