我对Cocoa编程很新,并且对控制事件处理有疑问。
我创建了一个'动作'对于一个按钮,并获得更新的AppDelegate.m来处理这个问题,例如。
- (IBAction)seedBtnPressed:(id)sender {
NSString* myString = @"Hi there";
[_updateLbl setStringValue:myString];
}
运行时,按下种子'按钮做它应该做什么 - 标签更新。 我的问题是:为什么我抓住了按钮按下事件'默认情况下,因为我没有看到我指定的任何地方。或者,如何通过动作捕获鼠标悬停事件?我收集了我为按钮创建了另一个操作,但我不确定如何指定这个来处理鼠标悬停'只有活动?很抱歉,如果我在这里使用了Windows术语,我理解Cocoa使用不同的名称。 谢谢 皮特
答案 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];