Как установить действие, когда пользователь дважды нажимает на элемент NSCollectionViewItem. Например, NSTableView имеет метод setDoubleAction. Есть ли что-то подобное для NSCollectionView?NSCollectionViewItem с двойным щелчком мыши?
Благодаря
Как установить действие, когда пользователь дважды нажимает на элемент NSCollectionViewItem. Например, NSTableView имеет метод setDoubleAction. Есть ли что-то подобное для NSCollectionView?NSCollectionViewItem с двойным щелчком мыши?
Благодаря
Вы, вероятно, хотите, чтобы справиться с этим в вашем NSCollectionViewItem, а не сам NSCollectionView (для работы с вашей NSTableView аналогию).
Спасибо, я закончил просто подклассирование прототипа NSView из NSCollectionView и добавление обработчика mouseDown. – indragie
Я знаю, что этот вопрос древний, но сейчас это третий результат в Google, и я нашел другой и очень простой метод, который я не видел в других местах. (Мне не нужно просто манипулировать представленным элементом, но у меня сложнее работать в моем приложении.)
NSCollectionView наследует от NSView, поэтому вы можете просто создать собственный подкласс и переопределить mouseDown. Это не совсем без ошибок - вы должны проверить количество кликов, и преобразовать точку из главного окна в вашем CollectionView координаты, перед использованием метода indexPathForItem NSCollectionView в:
override func mouseDown(with theEvent: NSEvent) {
if theEvent.clickCount == 2 {
let locationInWindow = theEvent.locationInWindow
let locationInView = convert(locationInWindow, from: NSApplication.shared.mainWindow?.contentView)
if let doubleClickedItem = indexPathForItem(at: locationInView){
//handle double click - I've created a DoubleClickDelegate (my collectionView's delegate, but you could use notifications as well)
...
Это чувствует, как будто я наконец-то нашел метод Apple предназначался для использования - в противном случае нет причин для indexPathForItem (at :) существует.
этот [блог]: http://www.springenwerk.com/2009/12/double-click-and-nscollectionview.html поможет вам. – user1377049