Проверка перетаскивания в NSCollectionView не отображается визуально - PullRequest
1 голос
/ 16 ноября 2010

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

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

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

Спасибо
Крис

1 Ответ

3 голосов
/ 17 ноября 2010

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

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

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

...