2010-07-22 3 views
0

코코아에서 지연 메뉴로 nsbutton을 만들고 싶습니다. 즉, 클릭하면 액션 메소드가 호출되고 2 초 동안 눌려진 상태로 유지되면 nsmenu가 표시됩니다.지연된 NSMenu로 NSButton을 만드는 방법은 무엇입니까?

Xcode 도구 모음에있는 "Build Active Target"버튼과 유사합니다.

감사합니다,

Dhanaraj.

+0

내가 [여기]이 질문에 대답 한 (http://stackoverflow.com/questions/9196109/nsbutton-with-delayed-nsmenu-objective-c-cocoa/39951734#39951734). [내 GitHub 코드] (https://github.com/evgenybaskakov/ButtonWithMenuOnLongClick)는 일반 NSButton을 기반으로하는 동작을 정확히 구현합니다. – evgeny

답변

1

이것은 NSPopUpButton입니다. 다음은 내 앱에서 만드는 방법입니다.

NSToolbarItem* item = [[[NSToolbarItem alloc] initWithItemIdentifier:identifier] autorelease]; 
[item setLabel:label]; 
[item setPaletteLabel:label]; 
[item setToolTip:tooltip]; 

NSPopUpButton* button = [[[NSPopUpButton alloc] initWithFrame:NSMakeRect(0, 0, 200, 24) pullsDown:NO] autorelease]; 
NSMenu* menu = [button menu]; 
// insert code here, that adds NSMenuItems to the menu 

[button setTarget:self]; 
[button setAction:@selector(menuAction:)]; 
[[button cell] setBezelStyle:NSTexturedRoundedBezelStyle]; 
[[button cell] setArrowPosition:NSPopUpArrowAtBottom]; 
[[button cell] setFont:[NSFont systemFontOfSize:14]]; 
[item setView:button]; 
+0

초 동안 클릭/개최하면 어떻게 다른 행동을합니까? – zrxq

+0

나는 그것을 알고 싶다. 아마도 Apple의 ButtonMadness 샘플이 도움이 될지도 모릅니다. 이 코드에는 그 아래에 메뉴를 표시 할 수있는 DropdownButton이 있습니다. 하지만 NSPopupButton이 아닌 일반적인 NSButton 일뿐입니다. 아마도 지연된 NSTimer 또는 뭔가 mouseUp 이벤트가 잠시 후에 발생하지 않은 경우 버튼 액션을 실행하는 대신 메뉴를 표시 할 수 있습니다. https://developer.apple.com/library/mac/#samplecode/ButtonMadness/Introduction/Intro.html에서 코드를 참조하십시오. –