2016-08-20 3 views
2

OS X 응용 프로그램에서 간단한 푸시 버튼의 다른 상태를 관리하려고합니다. 사용자가이를 클릭하고 사용자가 클릭을 릴리스하면. 버튼 (상태)를 클릭하면 NSButton Swift에서 클릭 및 릴리스 이벤트 처리

현재 내가

NSMomentaryLightButton NSMomentaryLightButton으로 내 버튼 유형을 설정, 그것은 에 불이 나타납니다. 단추에 테두리가있는 경우 이 나올 수도 있습니다. 버튼을 놓으면 정상 (꺼짐) 상태로 돌아갑니다.

이 유형의 버튼은 이 상태를 표시하지 않기 때문에 단순히 작업을 트리거하는 데 가장 적합합니다. 항상 정상적인 이미지 나 제목을 표시합니다. 이 옵션은 인터페이스 빌더의 버튼 관리자

에 순간 빛이라고 나는 그것이 좋은 방법이라고 생각하지만, 난 내 버튼 상태를 인쇄 할 때, 내가 설정 한 푸시 버튼보다 토글 버튼 같아요. 보시다시피 exemple gif

요약하면 어떻게하면 실제 푸시 버튼 동작을 사용할 수 있습니까? 사용자가 클릭 할 때와 사용자가 클릭을 릴리스 할 때 함수를 호출합니다.

감사합니다.

+0

일반 푸시 버튼을 사용하면 사용자가 클릭을 해제 할 때만 조치를 취해야합니다. 아무도 버튼을 눌렀을 때 별도의 행동을 기대하지 않습니다. 여전히 마음을 바꿀 기회가 있습니다. 다음을 의미합니까? https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSButtonCell_Class/index.html#//apple_ref/c/econst/NSPushOnPushOffButton? 토글 스위치, 다른 말로하면? 당신의 언어를 명확히 할 수 있습니까? – BaseZen

+0

나쁜 영어로 죄송합니다. 내 응용 프로그램에서, 버튼은 피아노 키보드에서, 그래서 나는 사용자가 아래로 밀어 넣을 때 뭔가 삼각을하고 싶습니다.현재 버튼은 한 번의 클릭으로 두 가지 상태를 유지하는 것보다 각 클릭에 대해 상태를 변경합니다. 명백합니까 ? :/ – Kyz

+0

마침내 내가 발견 솔루션 : mouseDown FUNC 재정 공개 (theEvent : NSEvent) { Swift.print ("! MouseDown") }와 mouseUp FUNC 재정 공개 (theEvent : NSEvent) { Swift.print ("마우스 Up! ") } – Kyz

답변

1

피아노 키에는 버튼을 사용하고 싶지 않습니다. 첫째, 직사각형이 아니며 단추처럼 작동하지 않습니다. 단일 작업 푸시 버튼이나 토글 스위치가 아닙니다. 사용자 지정보기에서 사용자 지정 방식으로 상호 작용하고 있습니다. 즉, NSButton 컨트롤 계층 구조가 호출되지 않습니다. 대신 당신이 NSView를 서브 클래스 여기에 설명 된대로 낮은 수준의 마우스 이벤트를 캡처하고 있습니다 : 자신의 의견에 당신의 상세한으로 https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/EventOverview/HandlingMouseEvents/HandlingMouseEvents.html#//apple_ref/doc/uid/10000060i-CH6-SW1

당신이 자신을 찾았지만, 내가 만들고 싶어 당신이 더 높은 수준의 포인트를 가지고 있는지 보기의.

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSBezierPath_Class/#//apple_ref/occ/instm/NSBezierPath/containsPoint : 그것은 마우스 containsPoint를 사용하여 검출 히트 하나의보기에 피아노 키의 모든를 통합하고, 자신이 NSBezierPath를 사용하여 렌더링 할 키를 보자 수행하는 것이 가장도 가능하고,

이것은 로트 더 많은 작업이지만 진정으로 전문적인 피아노 시뮬레이션을 만드는 유일한 방법입니다. 그런 다음 기본 제공 단추 모양 및 레이아웃의 제한없이 필요한 외곽선, 채우기 및 레이블로 키를 렌더링 할 수 있습니다. 예를 들어 약간 둥근 키의 아래쪽 가장자리를 가질 수도 있고 반짝이는 질감을 적용 할 수도 있습니다.

+0

고맙습니다. 지금은 분명합니다. – Kyz