NSPopUpButtonCell внутри пользовательской ячейки не появляется при нажатии - PullRequest
1 голос
/ 30 мая 2009

Я создал собственный подкласс NSCell с NSImageCell, некоторыми NSTextFieldCell и NSPopUpButtonCell.

Я инициализирую всплывающую ячейку, используя:

    myPopUpCell = [[NSPopUpButtonCell alloc] init];
    [myPopUpCell setBordered:NO];
    [myPopUpCell setAutoenablesItems:NO];
    [myPopUpCell addItemsWithTitles:[NSArray arrayWithObjects:@"Item1", @"Item2", @"Item3"]];

И рисование в drawInteriorWithFrame:inView:

Кажется, все работает отлично, за исключением того, что при нажатии на всплывающую ячейку во время работы моего приложения эта ячейка не появляется. Любые предложения о том, что может быть не так?

1 Ответ

5 голосов
/ 30 мая 2009

Создание ячейки всплывающей кнопки в drawInteriorWithFrame:inView: сделает именно это; нарисуйте это, но ничего больше. Обработка событий щелчка не связана с рисованием, поэтому вам придется выполнить некоторую работу в пользовательской ячейке для интерпретации событий мыши, и если они находятся внутри фрейма, который вы используете для всплывающей кнопки, передайте их на кнопку ячейки. Начните с создания подкласса методов, перечисленных в документации NSCell при отслеживании мыши, таких как –trackMouse:inRect:ofView:untilMouseUp:, и вы сможете понять, что необходимо для правильной работы ячейки кнопки.

В зависимости от того, что вы делаете, вам на самом деле может быть проще нарисовать строку заголовка самостоятельно, и просто используйте NSMenu's +popUpContextMenu:withEvent:forView:.

...