Перетаскивание из NSBrowser и использование привязок?

Я реализовал браузер, который совместно использует NSTreeController и NSOutlineView, поэтому я могу легко переключаться между ними и синхронизировать состояния. Реализация поддержки перетаскивания для NSOutlineView проста, но похоже, что NSBrowser не может поддерживать перетаскивание при использовании привязок. Кто-нибудь смог поддерживать перетаскивание из NSBrowser при использовании привязок?


person Adam Woodworth    schedule 17.04.2012    source источник


Ответы (1)


Я решил эту проблему, создав собственные подклассы NSBrowser, NSMatrix и NSBrowserCell. Мне пришлось заставить NSBrowser использовать режим NSRadioModeMatrix (одна ячейка), установив этот режим в методе NSBrowser подкласса -mouseDown, потому что он постоянно сбрасывался.

В подклассе NSBrowserCell я реализовал trackMouse:inRect:ofView:untilMouseUp:, просто заставив суперкласс делать свое дело, но вернул NO, чтобы произошло отслеживание, что позволило вызвать mouseDragged: в моем подклассе NSMatrix. Затем в mouseDragged: я сделал все необходимое, чтобы получить местоположение мыши, создать изображение мыши и использовать [self dragImage:at:offset:pasteboard:source:slideBack:].

Я не уверен, что это лучший подход, но он сработал. Это работает только тогда, когда в NSBrowser разрешено одно выделение.

person Adam Woodworth    schedule 17.04.2012