【问题标题】:How to compare the trackingArea of NSEvent to see which trackingArea triggered the "theEvent"如何比较 NSEvent 的 trackingArea 以查看哪个 trackingArea 触发了“theEvent”
【发布时间】:2014-01-08 17:59:39
【问题描述】:

所以,我有这个 mouseEntered 事件,如果我鼠标进入一个 trackingArea,它会显示一个标签。但是,根据输入的 trackingArea,我想为标签设置一个自定义字符串。

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

这是我的代码:

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

【问题讨论】:

    标签: objective-c macos cocoa nstrackingarea


    【解决方案1】:

    对我来说,这听起来像是 Spaghetti code 的开头..

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

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

    让实际拥有跟踪区域的视图发送一个通知,其中包含它希望其他人显示的字符串?

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

    干净、可维护、易于扩展。

    【讨论】:

    • 不,这是同一视图的一部分。我有两个按钮,每个按钮都有自己的 trackingArea,当我 mouseEnter 一个 trackingArea 时,我想要一个标签来显示一些文本,具体取决于我 mouseEntered 的按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多