更改为另一个窗口后,自定义NSCursor将丢失

时间:2012-03-25 08:29:09

标签: cocoa nstextfield nscursor

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

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

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

我还覆盖mouseUp:并在点击标签时执行操作。在我的情况下,我通过NSWorkspace打开网址。

问题:当浏览器打开时,“指针”光标被重置为普通箭头光标(因为最顶层的窗口现在是Safari)。但是,当我返回到我的应用程序并将光标移动到我的自定义超链接标签上方时,光标不会更改为“指针”。

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

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

1 个答案:

答案 0 :(得分:0)

请在添加光标rect之前添加一行重置,尽管不建议在文档直接调用时使用。 或者您可以要求窗口执行此操作。

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

以下代码用于我们的某个应用程序,效果非常好:

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