2009-05-29 3 views
1

NSImageCell, 일부 NSTextFieldCells 및 NSPopUpButtonCell을 사용하여 NSCell의 사용자 정의 하위 클래스를 생성했습니다. 위 팝업 셀을 클릭하면 내 인앱을 실행하는 동안 것을 제외하고 잘 작동하는 것 같다클릭했을 때 사용자 정의 셀 안의 NSPopUpButtonCell이 팝업되지 않습니다.

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

그리고 drawInteriorWithFrame:inView:

모두에 그리기 :

내가 사용하는 팝업 셀을 초기화하고 있습니다 셀이 팝업되지 않습니다. 무엇이 잘못 되었을지에 대한 제안?

+0

아마도 잘라 내기 및 붙여 넣기 오류 일 수도 있지만 arrayWithObjects 목록을 nil로 종료해야합니다. 예 : [myPopUpCell addItemsWithTitles : [NSArray arrayWithObjects : @ "Item1", @ "Item2", @ "Item3", nil]]; – Abizern

답변

5

drawInteriorWithFrame:inView:에 팝업 버튼 셀을 그려 보는 것은 그 일을 할 것입니다. 그것을 그리지 만, 그 밖의 것은 없습니다. 클릭 이벤트 처리는 그리기와 관련이 없으므로 마우스 이벤트를 해석하기 위해 사용자 정의 셀에서 일부 작업을 수행해야하며, 팝업 버튼에 사용중인 프레임 내부에있는 경우이를 전달해야합니다 버튼 셀에. 마우스를 추적하는 NSCell 문서에 나열된 방법 (예 : –trackMouse:inRect:ofView:untilMouseUp:)을 서브 클래 싱하는 것으로 시작하면 버튼 셀을 올바르게 작동시키는 데 필요한 것이 무엇인지 파악할 수 있어야합니다.

당신이하는 일에 따라 실제로 직접 제목 문자열을 그리는 것이 더 쉽고 NSMenu의 +popUpContextMenu:withEvent:forView:을 사용하는 것이 더 쉽습니다.

관련 문제