2009-03-30 5 views
19

하나 이상의 버튼이있는 대화 상자가있어서 프로그래밍 방식으로 가장 오른쪽 하나를 기본값으로 설정할 수 있기를 원하는 경우 사용자가 Enter 키 또는 Return 키를 누른 경우처럼 응답해야합니다. 사용자가 클릭했습니다.파란색 모양의 NSButton 기본 버튼

저는 [btn setKeyEquivalent:@"\r"]을 사용하고 있으며 정상적으로 작동하지만 버튼에 파란색 모양이 나타나지 않게하고 싶습니다. 내가 무엇을해야 하나?

답변

34

버튼 베젤 스타일을 올바르게 설정하지 못하고 올바르게 보이지 않았습니다. 기본 버튼을 설정 후 다음 작업 중 하나를

[btn setBezelStyle:NSRoundedBezelStyle]; 

: 지금은이 같은 버튼을 설정하고있어

[myWindow setDefaultButtonCell:[btn cell]]; 

또는

내 설정을 사용자 정의 시트왔다
[btn setKeyEquivalent:@"\r"] 
+0

그냥이 솔루션을보고 흥분으로 자신을 더러워. 버튼을 기본 버튼 셀로 설정하고 강제로 키 동등한 키를 설정하지 않았다는 것을 믿을 수 없습니다. 때로 NSView에 반환 할 단축키가있는 키가 포함되어있는 경우에도이 작업을 수행해야합니다. 이상하지만 진실입니다. 감사! – Kezzer

+4

Interface Builder에서 'Push'스타일을 선택해야합니다. 인터페이스 빌더가 제공하는 15 가지 스타일을 모두 거쳤으며 OS X 10.8.3 (Mountain Lion.)의 기본 버튼 셀로 설정되었을 때'푸시 '만 파란색으로 빛납니다. 다른 유형은 반환 키를 해당 키로 사용하고 기본값이됩니다 버튼을 누르면 '푸시'버튼 만 파란색으로 빛납니다. 나는 다른 버전의 OS X에서 전혀 테스트하지 않았다. Snow Leopard (?)에서이 질문이 필요하지 않았고 2009 년에이 질문이 나오고 답변을 받았을 가능성이 매우 높습니다. – ArtOfWarfare

+0

감사합니다. 이것은 나를 도왔습니다 :) – Sid

5

문서는 말한다 : 당신이 돌아갑니다 해당하는 키를 설정하면, 그 버튼이 기본 버튼이됩니다

하는 것으로.

따라서 제대로 수행하고 있습니다. 다음과 같이 키를 설정 한 후에이 방법을 시도해 볼 수 있습니다.

[button setNeedsDisplay:YES]; 

이렇게하면 단추가 다시 그려집니다.

+0

요세미티 이상에서는 여전히 푸른 색을 냅니 까? 핵심 대화 상자가 Return (작은 왼쪽 아래 화살표 기호)이지만 내 대화 상자에는 나타나지 않습니다. – Jay

1
[myWindow setDefaultButtonCell:[btn cell]]; // should do the trick. 

자세한 내용은 Apple's documentation을 참조하십시오.

2

기본 버튼을 NSAlert와 같이 표시하고 싶습니다. 다음 구성을 사용하면 파란색 기본 모양이 나타납니다. 10.12.3 Sierra에서 작동합니다.

button.bezelstyle = NSBezelStyleRounded; // Push in Interface Builder 
    button.keyEquivalent = @"\r"; 
    button.highlighted = YES; // this is the most important part.