【问题标题】:Custom NSCursor is lost after changing to another window切换到另一个窗口后自定义 NSCursor 丢失
【发布时间】:2012-03-25 08:29:08
【问题描述】:

我有一个基本的 Cocoa 应用程序,其中包含一个模拟超链接的自定义 NSTextField

我使用以下代码在文本字段实现中设置自定义光标:

- (void) resetCursorRects {
    [self addCursorRect: self.bounds cursor: [NSCursor pointingHandCursor]];
}

我还覆盖了mouseUp:,并在点击标签时执行了一个操作。就我而言,我通过 NSWorkspace 打开一个 URL。

问题:当浏览器打开时,“指向手”光标被重置为正常的箭头光标(因为最顶部的窗口现在是 Safari)。但是,当我返回我的应用并将光标移到我的自定义超链接标签上方时,光标不会变为“指向手”。

只有在我调整窗口大小(并且光标矩形被重置)之后,光标才会再次工作。

我尝试在 mouseUp: 调用中使光标 rect 无效,但这不起作用。

【问题讨论】:

    标签: cocoa nstextfield nscursor


    【解决方案1】:

    请在添加光标rect之前添加一行reset,虽然不建议在文档直接调用时使用。 或者你可以让窗口去做。

    [self resetCursorRects];
    ...
    [fatherWindow invalidateCursorRectsForView:self];
    ...
    [self addCursorRect:[self bounds] cursor:[NSCursor pointingHandCursor]];
    

    以下代码用于我们的一款应用,效果非常好:

    - (void) resetCursorRects
    {
        [super resetCursorRects];
        [self addCursorRect: [self bounds] cursor: [NSCursor     openHandCursor]];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多