Apple에서 제공하는 사운드 컨트롤과 마찬가지로 세로 슬라이더가있는 상태 항목을 만들고 싶습니다. 내 질문은 : 어떻게 그것을 사운드 메뉴의 슬라이더처럼 위/아래 화살표 키에 반응하게합니까?NSStatusItem- 목표 -C/코코아에 대해 NSMenu에 화살표가있는 NSSlider
키를 눌렀을 때 값을 늘리거나 줄이는 NSSlider 하위 클래스를 만들려고했지만 (첫 번째 응답자로 설정해야 함) 첫 번째 응답자로 만들려면이 메뉴의 대표 클래스를 만들고이 메서드를 추가하십시오.
- (void)menuWillOpen: (NSMenu*)menu
{
if (menu == statusBarMenu) {
[THE_WINDOW_THAT_CONTAINS_THE_SLIDER makeFirstResponder: slider];
}
어떤 창을 호출해야합니까? 다른 방법으로해야합니까? 어떻게 할거 니?
슬라이더 서브 클래스 :
#import <AppKit/AppKit.h>
@interface KeyRespondingSlider : NSSlider
@end
@implementation KeyRespondingSlider
- (BOOL)canBecomeKeyView
{
return YES;
}
- (BOOL)acceptsFirstResponder
{
return YES;
}
- (void)keyDown: (NSEvent*)theEvent
{
unsigned short keyCode = [theEvent keyCode];
if (keyCode == 126) { // up-arrow
[self setDoubleValue: [self doubleValue] + kChange];
}
else if (keyCode == 125) { // down-arrow
[self setDoubleValue: [self doubleValue] - kChange];
}
}
@end
나는 그것을 테스트 한 정상적인 NSWindow 표시와 함께 첫 번째로 반응입니다 때 작동합니다. 상태 표시 줄 항목의 메뉴로는 그 작업을 수행 할 수 없습니다.
추가 [슈퍼를 keyDown : theEvent] 또는 둘 이상이있는 경우 슬라이더 통해 탭 수 없습니다 –