2010-07-20 1 views
1

팝업 방식의 메뉴를 프로그래밍 방식으로 만들고 대리자 메서드 menuNeedsUpdate : (NSMenu *) 메뉴를 사용하여 팝업 메뉴를 업데이트 한 다음 popUpMenuPositioningItem을 사용하여 표시 : nil atLocation : mouseLoc inView : nil 메소드.각 키 누르기의 모든 메뉴를 호출하는 팝업 메뉴

마우스 컨트롤에 관한 한 정상적으로 작동합니다. 그러나 키보드 (글자 또는 화살표 키)를 사용할 때 menuNeedsUpdate : 모든 것, 루트 메뉴 및 하위 메뉴를 호출하는 것으로 나타났습니다. 이것은 매우 비효율적이며 키보드를 통해 메뉴를 사용하는 것을 느리게 만듭니다.

왜 이런 일이 발생합니까? 그것을 우회하거나 막을 방법이 있습니까?

답변

1

위임자에 menuHasKeyEquivalent:forEvent:target:action:을 구현하려고합니다 (그리고 메뉴에 아무 것도없는 키가있는 경우 항상 NO을 반환).

+0

브릴리언트. 그것으로 해결되었습니다. 흥미로운 점은 menuHasKeyEquivalent : forEvent : target : action : NSLog를 디버그 목적으로 호출했는지 확인하는 것입니다. 글쎄, 지금은 (모든 키를 누를 때 전체 메뉴를 채우지 않아도) 잘 작동하기 때문에 전화가 걸려 왔지만, NSLog는 어떤 이유로 올라 오지 않습니다. – the979kid

+0

이상하지만, 나는 그것이 효과가있어 기쁘다! – Wevah