Cocoa 更改到其他窗口后,自定义NSCursor丢失
我有一个基本的Cocoa应用程序,带有一个自定义的模拟超链接的Cocoa 更改到其他窗口后,自定义NSCursor丢失,cocoa,nstextfield,nscursor,Cocoa,Nstextfield,Nscursor,我有一个基本的Cocoa应用程序,带有一个自定义的模拟超链接的NSTextField 我使用以下代码在文本字段实现中设置自定义光标: - (void) resetCursorRects { [self addCursorRect: self.bounds cursor: [NSCursor pointingHandCursor]]; } 我还重写了mouseUp:,并在单击标签时执行操作。在我的例子中,我通过NSWorkspace打开一个URL 问题:当浏览器打开时,“指针”光标重置为
NSTextField
我使用以下代码在文本字段实现中设置自定义光标:
- (void) resetCursorRects {
[self addCursorRect: self.bounds cursor: [NSCursor pointingHandCursor]];
}
我还重写了mouseUp:
,并在单击标签时执行操作。在我的例子中,我通过NSWorkspace
打开一个URL
问题:当浏览器打开时,“指针”光标重置为正常箭头光标(因为最上面的窗口现在是Safari)。但是,当我返回应用程序并将光标移动到自定义超链接标签上方时,光标不会变为“指针”
只有在我调整窗口大小(并且光标矩形被重置)之后,光标才能再次工作
我尝试在
mouseUp:
调用中使游标rect无效,但没有成功 请在添加cursor 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]];
}