質問

どのように私は、ユーザーがダブルNSCollectionViewItemをクリックしたときのためのアクションを設定します。 NSTableViewは、例えば、setDoubleAction方法があります。 NSCollectionViewのための同様の何かがありますか?

おかげ

役に立ちましたか?

解決

あなたはおそらくNSCollectionViewItem自体は(あなたのNSCollectionViewのアナロジーをオフに動作するように)のではなく、あなたのNSTableViewでこれを処理したいと思います。

他のヒント

私はこの質問は古代である知っているが、それは今Googleで第三の結果として起動します、と私は他のドキュメントに見ていない異なると非常に簡単な方法を見つけました。 (私はちょうど表さアイテムを操作する必要がありますが、私のアプリで行うには、より複雑な仕事を持っていません。)

NSCollectionViewNSViewから継承するので、あなたは、単にカスタムサブクラスを作成し、mouseDownを上書きすることができます。これが落とし穴なしで完全ではありません - あなたは、クリック数をチェックし、あなたのコレクションビューのNSCollectionViewindexPathForItemメソッドを使用する前に、座標にメインウィンドウからポイントを変換する必要があります:

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が使用されることを意図した方法を見つけたかのように

これは感じています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top