NSCollectionViewItemは、アクションをダブルクリックしますか?
-
20-09-2019 - |
質問
どのように私は、ユーザーがダブルNSCollectionViewItem
をクリックしたときのためのアクションを設定します。 NSTableView
は、例えば、setDoubleAction
方法があります。 NSCollectionView
のための同様の何かがありますか?
おかげ
解決
あなたはおそらくNSCollectionViewItem
自体は(あなたのNSCollectionView
のアナロジーをオフに動作するように)のではなく、あなたのNSTableView
でこれを処理したいと思います。
他のヒント
私はこの質問は古代である知っているが、それは今Googleで第三の結果として起動します、と私は他のドキュメントに見ていない異なると非常に簡単な方法を見つけました。 (私はちょうど表さアイテムを操作する必要がありますが、私のアプリで行うには、より複雑な仕事を持っていません。)
NSCollectionView
がNSView
から継承するので、あなたは、単にカスタムサブクラスを作成し、mouseDown
を上書きすることができます。これが落とし穴なしで完全ではありません - あなたは、クリック数をチェックし、あなたのコレクションビューの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:)
が存在しない理由がありません - 私は最終的にAppleが使用されることを意図した方法を見つけたかのようにこれは感じています。
所属していません StackOverflow