可可 - 捕捉特定事件

时间:2012-11-13 06:09:27

标签: objective-c cocoa events

我对Cocoa编程很新,并且对控制事件处理有疑问。

我创建了一个'动作'对于一个按钮,并获得更新的AppDelegate.m来处理这个问题,例如。

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

运行时,按下种子'按钮做它应该做什么 - 标签更新。 我的问题是:为什么我抓住了按钮按下事件'默认情况下,因为我没有看到我指定的任何地方。或者,如何通过动作捕获鼠标悬停事件?我收集了我为按钮创建了另一个操作,但我不确定如何指定这个来处理鼠标悬停'只有活动?很抱歉,如果我在这里使用了Windows术语,我理解Cocoa使用不同的名称。 谢谢 皮特

2 个答案:

答案 0 :(得分:1)

要获取NSView的鼠标悬停事件,您应该使用NSTrackingArea类(假设您的目标是相对现代版本的OS X)。 Apple在http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/TrackingAreaObjects/TrackingAreaObjects.html

上提供了很好的文档

关于seedBtnPressed:触发的其他查询,尽管您没有指定它 - 您是否在Interface Builder中为按钮而不是以编程方式设置了一个操作?

答案 1 :(得分:1)

您需要对NSButton类进行子类化(甚至更好的是NSButtonCell类)。

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

当鼠标进入和退出该区域时,应该调用它们。您可能还需要重新创建跟踪区域,请查看此处:

- (void)updateTrackingAreas

对于淡入和淡出效果,我使用动画师和alpha值进行游戏,例如:

[[self animator]setAlphaValue:0.5];