NSPopUpButtonCell внутри пользовательской ячейки не отображается при нажатии
-
06-09-2019 - |
Вопрос
Я создал пользовательский подкласс NSCell с NSImageCell, некоторыми NSTextFieldCells и NSPopUpButtonCell.
Я инициализирую всплывающую ячейку, используя:
myPopUpCell = [[NSPopUpButtonCell alloc] init];
[myPopUpCell setBordered:NO];
[myPopUpCell setAutoenablesItems:NO];
[myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];
И втягивает его в себя drawInteriorWithFrame:inView:
Кажется, все работает отлично, за исключением того, что при нажатии на всплывающую ячейку во время запуска моего приложения ячейка не появляется.Есть какие-нибудь предположения о том, что может быть не так?
Решение
Рисование ячейки всплывающей кнопки в drawInteriorWithFrame:inView:
собирается сделать именно это;нарисуй это, но ничего больше.Обработка событий нажатия не связана с рисованием, поэтому вам придется проделать некоторую работу в вашей пользовательской ячейке, чтобы интерпретировать события мыши, и если они находятся внутри рамки, которую вы используете для всплывающей кнопки, передать их в ячейку кнопки.Начните с создания подкласса методов, перечисленных в документации NSCell в разделе отслеживание мыши, например –trackMouse:inRect:ofView:untilMouseUp:
, и вы должны быть в состоянии понять, что необходимо для того, чтобы ячейка кнопки действовала правильно.
В зависимости от того, что вы делаете, вам может оказаться проще нарисовать строку заголовка самостоятельно и просто использовать NSMenu +popUpContextMenu:withEvent:forView:
.