我是可可编程的新手,并且有一个有关控制事件处理的问题。
我为按钮创建一个"操作",然后获取更新的appdelegate.m来处理此操作。
- (IBAction)seedBtnPressed:(id)sender {
NSString* myString = @"Hi there";
[_updateLbl setStringValue:myString];
}
运行此操作时,按"种子"按钮可以执行应有的功能 - 标签更新。我的问题是:默认情况下,我为什么捕获了"按钮按事件",因为我看不到我指定的任何位置。或者,我如何用动作捕获鼠标击球事件?我收集到的按钮会创建另一个动作,但是不确定如何指定此操作以仅处理"鼠标越过"事件?抱歉,如果我在这里使用Windows术语,我了解可可使用不同的名称。谢谢皮特
您需要对NSButton类(甚至更好的NSButtoncell类)子类。
- (void)mouseEntered:(NSEvent *)theEvent;
- (void)mouseExited:(NSEvent *)theEvent;
当鼠标进入并退出区域时,他们应该被调用。您可能还需要重新创建跟踪区域,在这里查看:
- (void)updateTrackingAreas
为了淡入淡出和淡出效果,我用动画师和alpha值播放了:
[[self animator]setAlphaValue:0.5];
要获取NSView
的鼠标越过事件,您应该使用NSTrackingArea
类(假设您是针对相对现代版本的OS X)。Apple在http://developer.apple.com/library/mac/#documentation/cocoa/cocoa/coneptual/coneptoul/eventoverview/trackingareaobjects/trackingareaobjects.html
对于其他有关seedBtnPressed:
触发的查询,尽管您没有指定它 - 您是否在接口构建器中为按钮设置了一个操作,而不是编程?