如何比较NSEvent的trackingArea以查看哪个trackingArea触发了“theEvent”

时间:2014-01-08 17:59:39

标签: objective-c macos cocoa nstrackingarea

所以,我有这个mouseEntered事件,如果我鼠标进入trackingArea,它将使标签可见。但是,根据输入的trackingArea,我想为标签设置一个自定义String。

主要问题是:我如何获得输入的trackingArea。

这是我的代码:

-(void)mouseEntered:(NSEvent *)theEvent
{
   if([theEvent trackingArea] isEqual: -- to my trackingArea --)
   {
       [self.label setStringValue:@"Test"];
   }
}

1 个答案:

答案 0 :(得分:0)

听起来像Spaghetti code对我的开始......

I.e。:在一个视图中检查是否有东西是由另一个视图触发的 - 我想你正在尝试实现某种在线帮助系统,其中有一些文本可以显示给各种视图/控件。在这种情况下,您可能很容易得到一个巨大的if-then-else块和几十个视图来检查。

无论如何,我建议您使用不同的方法并在代码中包含loose coupling

拥有实际拥有跟踪区域的视图如何发送包含其希望其他人显示的字符串的通知?

这样,视图不需要彼此了解,也不需要设置相互指向的实例变量等等 - 只是某个人发送的通知,而其他人会听到。

清洁,易维护,易于扩展。