可可 - 捕获特定事件



我是可可编程的新手,并且有一个有关控制事件处理的问题。

我为按钮创建一个"操作",然后获取更新的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:触发的查询,尽管您没有指定它 - 您是否在接口构建器中为按钮设置了一个操作,而不是编程?

最新更新