2011-07-28 4 views
1

NSPopUpButton으로 관리되는 200 개가 넘는 큰 목록이 있습니다. 클릭하면 목록이 화면의 상단이나 하단까지 확장됩니다.NSPopUpButton의 "팝업"크기를 어떻게 제한 할 수 있습니까?

열린 크기를 어떻게 제한하여 최대 20 개 정도의 항목을 한꺼번에 표시 할 수 있습니까?

+0

선물 하시려는 콘텐츠의 유형은 무엇입니까? 더 좋은 방법이있을 수 있습니다. –

답변

4

200 항목이 너무 많아 팝업 메뉴를 사용할 수 없습니다. Mac 휴먼 인터페이스 지침 recommend에는 팝업 메뉴에 최대 12 개의 항목이 포함되어야합니다.

디자인을 재고해야합니다. 팝업 메뉴 대신 헤더가없는 단일 열 NSTableView을 만들고 사용자가 스크롤 가능한 옵션 목록에서 항목을 선택할 수 있도록하는 것이 좋습니다.

내가 NSPopUpButton를 서브 클래스, 나의 서브 클래스에서 confinementRectForMenu:onScreen:합니다 ( NSMenuDelegate 프로토콜의 일부를) 정의 : 내가 찾은

+2

전형적인 StackOverflow 답변 : "당신이 잘못하고 있어요!" :-) 문제는이 컨트롤이 한 줄만 사용하도록하려는 것입니다. NSTableView를 "팝업"하여 멋지게 만들 수 있다면 문제가됩니다. – Mira

+2

라이온을 타켓팅 할 수 있다면 내가 생각한 팝 오버를 사용할 수 있습니다. 그러나, 내 요점은 당신이 잘못하고 * 당신이 다른 방식으로 생각해야한다는 것입니다 :-) –

4

이 솔루션은 다음이었다. 이것은 목록이 차지하는 공간을 제한합니다. 안타깝게도 크기를 지정할 수는 없지만 위치를 결정하는 작업을해야합니다. [self frame] origin을 사용하고 [[self superview] convertPointToBase:]을 사용하고 조금씩 조금씩 이동 한 다음 다른 계산을 수행 한 다음 [[self window] convertBaseToScreen:]으로 최종 변환을 수행하십시오.

+1

안녕하세요, 나는 동일한 문제에 갇혀있다, 당신은 몇 가지 코드를 게시 할 수 있습니다 .. –

관련 문제