質問

私は、アプリケーションの他の場所からドラッグされたアイテムを受け入れたいNSCOLLECTIONVIEWを持っています。

実装します collectionView:validateDrop:proposedIndex:dropOperation:collectionView:acceptDrop:index:dropOperation: CollectionViewのデリゲートで、適切なドラッグされたタイプに登録します。適切なタイプをドラッグすると、両方の方法が正常に呼ばれますが、有効なドラッグを示すコレクションビューの上に青いフォーカスリングを取得しません。

コレクションビューと、フォーカスリングのデフォルト設定と外部設定でのスクロールビューの両方を試しました。どちらも標準的な非由来のココアクラスです。他に何か試してみるべきかどうか疑問に思いました。確かに、このためにnscollectionViewをサブクラス化する必要はありませんか?

ありがとう
クリス

役に立ちましたか?

解決

フォーカスリングは、通常、ドラッグの目的地に関するフィードバックを提供する正しい方法ではありません。すべてのビューはそれを少し違った方法で行います。 nStextViewには、挿入バーが表示されます。 nstableviewは、行の間に青い線を示しています Before 操作をドロップし、列の周りにベゼルを表示します On ドロップ操作。 (見る NSTableViewDropOperation)

nscollectionViewは、既存のサブビュー間の「ギャップ」を示して、アイテムがどこにドロップされるかを示す Before 操作をドロップすると、設定されます selected nscollectionViewitemのプロパティ YES にとって On ドロップ操作。 (注:nscollectionViewItemは、デフォルトでは何もしません。 selected 財産。あなたはそれを自分で実装する必要があります。)

nscollectionViewのフィードバックは既存のサブビューのみを使用しているため、空のnscollectionViewのフィードバックはまったくないようです。この行動を自分で提供するには、サブクラスが必要です。また、nscollectionViewがこれを実行するようにバグを提出することもできます。

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