2013-01-25 3 views
1

NSButton을 생성했습니다 (아래 코드 참조). 단추는 원하는 방식으로 표시합니다 (경계선없는 이미지, 텍스트 위의 이미지). 버튼의 텍스트 부분을 클릭하면 버튼이 눌려져 동작이라고 부릅니다. 버튼의 이미지 부분을 클릭하면 아무 일도 일어나지 않습니다. 어떻게하면 NSButton의 이미지 부분을 클릭 할 수있게 할 수 있습니까? NSButtonCell을 서브 클래 싱하여이 작업을 할 수는 있지만 반드시 필요한 이유는 모르겠다.클릭 가능한 이미지와 텍스트가 포함 된 NSButton

NSButton *button = [[NSButton alloc] initWithFrame:NSZeroRect]; 
[button setBezelStyle:NSRegularSquareBezelStyle]; 
[button setBordered:YES]; 
[button setImagePosition:NSImageAbove]; 
[button setButtonType:NSMomentaryChangeButton]; 
[button setImage:[NSImage imageNamed:@"myImage"]]; 
[button setTitle:@"Button Title"]; 
[button setTarget:self]; 
[button setAction:@selector(buttonAction:)]; 

답변

0

버튼 자체의 이미지입니다. 클릭 할 필요가 없습니다. 클릭 이벤트는 buttonAction에 의해 포착됩니다.

클릭 한 애니메이션 만 표시하면됩니다. 이를 위해서는 다른 역상이 필요합니다. 그리고 마우스를 아래로 움직이는 이벤트를 추적합니다. 다른 이미지를 클릭하면 기본 이미지가 표시됩니다.

이렇게하면 이미지를 클릭하는 느낌을 줄 수 있습니다.

+0

나는 그것이 정확한지 잘 모르겠다. 현재 버튼의 텍스트 부분을 클릭하면 클릭 한 것처럼 이미지가 흐려집니다. 따라서 기본적으로 텍스트 부분을 클릭하면 사용자에게 클릭되는 적절한 피드백이 제공됩니다. 그러나 버튼의 이미지 부분을 클릭하면 시각적 피드백이 표시되지 않습니다. NSButton의 alternateImage 속성을 채웠는지 여부에 관계없이이 경우입니다. – Carter

+0

나를 업데이트하십시오 - 이미지가 작동하는지 아닌지를 클릭하십시오 –

+0

아니요, 버튼의 이미지 부분을 클릭해도 아무 일도 일어나지 않습니다. 애니메이션이 없으며 대상의 작업이 호출되지 않습니다. 단추의 텍스트 부분을 클릭하면 대체 이미지를 표시하여 이미지의 애니메이션을 적용하고 대상의 동작을 호출합니다. – Carter

0

다른보기가 버튼의 이미지와 겹칠 수 있습니다. 위의 코드에서 물론 적절한 버튼 프레임을 제공하면 모두 잘 작동합니다 (테두리가있는 경계선없는 버튼 모두). 깨끗한 프로젝트에서 사용해보십시오.