2

アプリケーションの他の場所からドラッグされたアイテムを受け入れたいNSCollectionViewがあります。

私はコレクションビューのデリゲートに実装collectionView:validateDrop:proposedIndex:dropOperation:して、適切なドラッグされたタイプに登録します。collectionView:acceptDrop:index:dropOperation:適切なタイプをドラッグすると、どちらのメソッドも正常に呼び出されますが、コレクションビュー上に有効なドラッグを示す青いフォーカスリングが表示されません。

フォーカスリングのデフォルト設定と外部設定で、コレクションビューとそれに含まれるスクロールビューの両方を試しました。どちらも標準の非派生Cocoaクラスです。他にやってみるべきことがあるかと思いました。確かに、このためにNSCollectionViewをサブクラス化する必要はありませんか?

ありがとう
クリス

4

1 に答える 1

3

フォーカスリングは通常、ドラッグ先に関するフィードバックを提供する正しい方法ではありません。すべてのビューはそれをわずかに異なって行います。NSTextViewは挿入バーを表示します。NSTableViewは、ドロップ操作の場合は行の間に青い線を表示し、Beforeドロップ操作の場合は行の周りにベゼルを表示しOnます。(を参照NSTableViewDropOperation

NSCollectionViewは、既存のサブビュー間の「ギャップ」を表示して、ドロップ操作のためにアイテムがドロップされる場所を示し、ドロップ操作のためにNSCollectionViewItemのプロパティBeforeを設定します。(注:NSCollectionViewItemは、デフォルトでは、プロパティを視覚的に表すために何もしません。自分で実装する必要があります。)selectedYESOnselected

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

于 2010-11-16T22:39:39.127 に答える