2010-11-16 5 views
0

У меня есть NSCollectionView, что я хочу принимать элементы, перетаскиваемые из другого места в моем приложении.Проверка перетаскивания на NSCollectionView не отображается визуально

Я реализую collectionView:validateDrop:proposedIndex:dropOperation: и collectionView:acceptDrop:index:dropOperation: в делегате viewview и регистрируюсь для соответствующих перетаскиваемых типов. Оба метода получаются точными, когда я перетаскиваю соответствующие типы, но я не получаю синее кольцо фокуса над списком коллекций, указывающее на допустимое перетаскивание.

Попробовали просмотреть как просмотр коллекции, так и ее свиток с прокруткой по умолчанию и внешним настройкам для кольца фокусировки. Оба являются стандартными не производными классами какао. Интересно, есть ли что-нибудь еще, что я должен попробовать. Разумеется, для этого не требуется подкласс NSCollectionView?

Благодаря
Chris

ответ

2

Фокус кольца обычно не правильный путь, чтобы обеспечить обратную связь о драг направлений. Каждая точка зрения выглядит несколько иначе. NSTextView показывает панель ввода. NSTableView показывает синюю линию между строками для операций удаления Before и показывает рамку вокруг строки для операций удаления On. (См NSTableViewDropOperation)

NSCollectionView показывает «разрыв» между существующими подвидами, чтобы показать, где элементы будут сброшены для Before операций падения, и он установит selected собственности на NSCollectionViewItem в YES для On операций падения. (Примечание: NSCollectionViewItem не делает ничего по умолчанию, чтобы явно представлять свойство selected. Вы должны реализовать это самостоятельно.)

Поскольку обратная связь NSCollectionView использует только существующие просмотры, кажется, что никакой обратной связи для пустых NSCollectionView не существует , Вам нужно будет подклассом, чтобы обеспечить это поведение самостоятельно. Вы также можете указать ошибку, чтобы запросить, чтобы NSCollectionView сделал это сам.

+0

Ницца, краткий обзор, спасибо! –