NSPopUpButtonCell внутри пользовательской ячейки не отображается при нажатии

StackOverflow https://stackoverflow.com/questions/928014

Вопрос

Я создал пользовательский подкласс 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:.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top