macos – 将鼠标光标更改为不活动的NSWindow

macos – 将鼠标光标更改为不活动的NSWindow,第1张

概述我已经将NSWindow子类化了,我有一个MYWindow类实现了以下方法: -(void)resetCursorRects { NSImage *image = [NSImage imageNamed:@"cursor.png"]; [image setSize:NSMakeSize(32, 32)]; NSCursor *cursor = [[NSCursor allo 我已经将NSWindow子类化了,我有一个MYWindow类实现了以下方法:

-(voID)resetCursorRects {    NSImage *image = [NSImage imagenamed:@"cursor.png"];    [image setSize:NSMakeSize(32,32)];    NSCursor *cursor = [[NSCursor alloc] initWithImage:image hotSpot:NSMakePoint(1,1)];    [super resetCursorRects];        [self addCursorRect:[self bounds] cursor:cursor];}

这将改变整个窗口的光标,我将看到cursor.png而不是默认的鼠标指针.问题是,这只有在MYWindow设置为关键窗口时才有效,这当然是非常重要的.

在我的项目开始时我只有一个主窗口,但现在我需要有两个不同的MYWindow.两个窗口的问题是不能将它们都设置为关键窗口,因此自定义鼠标指针仅显示在活动窗口上.我需要单击其他窗口以显示光标.

有没有办法解决?所以我在两个窗口上都有一个自定义光标?

编辑:尝试过NSTrackingArea

我将此添加到我的内容视图的init方法中:

self.trackingArea = [[NSTrackingArea alloc] initWithRect:[self frame] options: (NSTrackingCursorUpdate | NSTrackingActiveAlways | NSTrackingMouseMoved) owner:self userInfo:nil];[self addTrackingArea:self.trackingArea];

然后我重写了cursorUpdate:像这样:

-(voID)cursorUpdate:(NSEvent *)event {    NSLog(@"event : %@",event);    [[NSCursor crosshairCursor] set];}

这使得crosshairCursor在包含NSImageVIEw派生类的NSWindow是关键窗口时显示.但是如果我在应用程序的关键窗口中创建另一个NSWindow,则光标会再次返回标准光标.难道我做错了什么?

解决方法 您应该能够添加一个更改光标的NSTrackingArea,只要您不希望它在应用程序处于非活动状态时也发生变化(这基本上是不可能的).

编辑:

我能够使用以下代码使用它:

- (vod)someSetup;{    NSTrackingArea *const trackingArea = [[NSTrackingArea alloc] initWithRect:NSZeroRect options: (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways | NSTrackingInVisibleRect) owner:self userInfo:nil];    [self.vIEw addTrackingArea:trackingArea];}- (voID)mouseEntered:(NSEvent *)theEvent;{    [[NSCursor IBeamCursor] push];}- (voID)mouseExited:(NSEvent *)theEvent;{    [[NSCursor IBeamCursor] pop];}
总结

以上是内存溢出为你收集整理的macos – 将鼠标光标改为不活动的NSWindow全部内容,希望文章能够帮你解决macos – 将鼠标光标更改为不活动的NSWindow所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1006808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存