2012-11-13 4 views
0

저는 코코아 프로그래밍을 처음 접했고 컨트롤 이벤트 처리에 대해 질문이 있습니다.코코아 - 특정 이벤트 캡처

단추에 대한 '동작'을 만들고이를 처리 할 수있는 업데이트 된 AppDelegate.m을 얻습니다.

- (IBAction)seedBtnPressed:(id)sender { 
    NSString* myString = @"Hi there"; 
    [_updateLbl setStringValue:myString]; 
} 

'시드'버튼을 누르면 레이블이 업데이트됩니다. 제 질문은 : 왜 내가 이것을 지정했는지 알지 못하기 때문에 기본적으로 '버튼 누르기 이벤트'를 캡처 한 것입니다. 또는 액션으로 마우스 오버 이벤트를 캡처하는 방법은 무엇입니까? 나는 버튼에 대해 다른 액션을 만들지 만, '마우스 오버'이벤트 만 처리하도록 지정하는 방법을 모르십니까? 미안 윈도우 용어를 사용했다면 코코아가 다른 이름을 사용한다는 것을 이해합니다. 감사 피트

답변

1

NSButton 클래스를 하위 클래스로 만들거나 NSButtonCell 클래스를 더 잘 정의해야합니다.

- (void)mouseEntered:(NSEvent *)theEvent; 
- (void)mouseExited:(NSEvent *)theEvent; 

마우스를 입력하고 나가면 호출됩니다. 내가 예를 들어 애니메이션 및 알파 값으로 연주 페이드를 들어

- (void)updateTrackingAreas 

및 효과를 페이드 아웃 : 당신은 여기 보면, 추적 영역을 다시 만들 필요가 있습니다

[[self animator]setAlphaValue:0.5]; 
+0

감사합니다. – Pete855217

1

당신이 NSTrackingArea 클래스 (당신이 OS X의 상대적으로 현대적인 버전을 타겟팅 가정)를 사용한다 NSView에 마우스 오버 이벤트를 얻으려면. 애플은 이것에 대한 좋은 문서를 가지고 있습니다 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/TrackingAreaObjects/TrackingAreaObjects.html

당신이 지정하지는 않았지만 seedBtnPressed: 트리거링에 대한 다른 질문이 있으시면 프로그래밍 방식으로 단추 대신 Interface Builder에서 동작을 설정 했습니까?

+0

감사 rickerbh, 그래 내가했다 IB에서이 버튼에 대한 작업을 만들었습니다. – Pete855217