Я реализовал браузер, который совместно использует NSTreeController и NSOutlineView, поэтому я могу легко переключаться между ними и синхронизировать состояния. Реализация поддержки перетаскивания для NSOutlineView проста, но похоже, что NSBrowser не может поддерживать перетаскивание при использовании привязок. Кто-нибудь смог поддерживать перетаскивание из NSBrowser при использовании привязок?
Вопрос
Перетаскивание из NSBrowser и использование привязок?
Ответы
Ответ 1 · рейтинг 2 · Adam Woodworth
Я решил эту проблему, создав собственные подклассы NSBrowser, NSMatrix и NSBrowserCell. Мне пришлось заставить NSBrowser использовать режим NSRadioModeMatrix (одна ячейка), установив этот режим в методе NSBrowser подкласса -mouseDown, потому что он постоянно сбрасывался.
В подклассе NSBrowserCell я реализовал trackMouse:inRect:ofView:untilMouseUp:, просто заставив суперкласс делать свое дело, но вернул NO, чтобы произошло отслеживание, что позволило вызвать mouseDragged: в моем подклассе NSMatrix. Затем в mouseDragged: я сделал все необходимое, чтобы получить местоположение мыши, создать изображение мыши и использовать [self dragImage:at:offset:pasteboard:source:slideBack:].
Я не уверен, что это лучший подход, но он сработал. Это работает только тогда, когда в NSBrowser разрешено одно выделение.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Удалите NSElements с экрана из NSOutlineView или NSTreeController.
- Привязки какао - освобождение, пока наблюдатели значения ключа все еще были зарегистрированы предупреждения
- Кнопки подсчета в стиле iTunes с использованием привязок какао
- Команда sudo chmod из какао
- Cocoa Bindings не обновляет значение NSTextField