标签: nscursor

NSCursor:使用带有光标变焦(或视网膜)的高分辨率光标

在OSX中,用户可以使用辅助功能系统首选项缩放鼠标光标.由于Lion(我认为)OSX将游标存储为PDF并且能够平滑地调整它们的大小.我希望我的应用程序具有相同的功能,但使用PDF作为NSImage我的用途NSCursor只是在设置了大于1.0的光标缩放级别时缩放渲染的位图.

我如何能:

  • 为我的光标使用矢量图稿并让它们像系统光标一样正确缩放?
  • 检测当前光标缩放级别.
  • 光标缩放级别更改时收到通知?

此外,当我的屏幕使用HiDPI模式并恢复光标缩放设置时,PDF光标也会模糊,那么你们究竟如何视网膜 - 你的光标呢?

macos cocoa cursor nscursor

17
推荐指数
1
解决办法
1319
查看次数

我可以从非活动应用程序更改当前光标吗?

我有一个在后台运行的实用程序Mac应用程序(LSUIElement启用).在某些情况下,此应用程序显示带有几个按钮的菜单窗口.问题是,当我将鼠标悬停在此窗口上时,鼠标光标仍然会根据其下方的应用程序运行 - 当菜单下有文本时,光标会变为插入"I beam"形状.

显然我更喜欢常规指针箭头.我NSTrackingArea经过一些黑客攻击后潜入了朋友,我可以检测到鼠标输入和鼠标退出事件.但是当我尝试使用NSCursor鼠标输入更改当前光标时,没有任何反应.看起来机器拒绝从非活动应用程序更改游标,因为当我在鼠标输入事件之前激活应用程序时,光标会改变.

我不想仅仅为了更改光标而切换活动应用程序.有没有办法摆脱非活动应用程序的光标?

PS cocoa-dev上的同样问题:,.

macos cocoa mouse-cursor nscursor nstrackingarea

10
推荐指数
1
解决办法
554
查看次数

NSCursor总是重置为Arrow

为什么我不能在鼠标拖动期间让光标停留?一旦我开始拖动,它就会恢复为"箭头"(即使我在启动后将其设置为app delegate中的开放手).

- (void)mouseDown:(NSEvent *)event
{
   [[NSCursor closedHandCursor] push];
}

- (void)mouseUp:(NSEvent *)event
{
   [NSCursor pop];
}
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c nscursor

10
推荐指数
2
解决办法
4371
查看次数

Native OSX Lion调整自定义NSWindow或NSView的游标大小

如果我们使用NSTrackingArea某些指定区域,那么我们可以实现这样的方法来更改默认光标:

-(void)cursorUpdate:(NSEvent *)theEvent {
    [[NSCursor resizeLeftCursor] set];
}
Run Code Online (Sandbox Code Playgroud)

我实现自定义调整大小NSWindow,使用NSBorderlessWindowMask.并希望使用本机Lion的两个箭头游标.但是NSCursor API中不存在这种类型的游标.

我能从代码中以某种方式获得这样的原生游标吗?
或者也许我必须手工重绘(不是一个好主意)?

macos cocoa objective-c nscursor osx-lion

8
推荐指数
4
解决办法
2096
查看次数

Cocoa nsview更改游标

我试图在我的cocoa应用程序中更改默认光标.我读到了这个,但标准方法对我不起作用.

我尝试将此方法添加到我的OpenGLView子类中:

- (void) resetCursorRects
{
    [super resetCursorRects];
    NSCursor * myCur = [[NSCursor alloc] initWithImage:[NSImage imageNamed:@"1.png"] hotSpot:NSMakePoint(8,0)];
    [self addCursorRect: [self bounds]
          cursor: myCur];
    NSLog(@"Reset cursor rect!");

} 
Run Code Online (Sandbox Code Playgroud)

它不起作用.为什么?

macos cocoa objective-c nscursor

6
推荐指数
2
解决办法
5339
查看次数

如何观察 [NSCursor currentCursor] 的变化?

我有一个带有自定义光标的应用程序,我使用 NSCursor 的自定义包装器实现了该应用程序(大部分主要代码设计为可移植操作系统,因此在上面我假装 NSCursor 是 Windows 样式的光标)。当用户 cmd+tabs 回到窗口时,我遇到了一些光标没有改回我的自定义问题的问题,我想看看是什么改变了 currentCursor 的值。到目前为止,我尝试设置断点的任何地方都没有给我任何信息。

所以,我想知道是否有办法(在 Xcode 中)在 [NSCursor currentCursor] 的值发生变化时立即中断。这可能吗?我的应用程序可以访问此类数据吗?

谢谢 - 我希望我已经说清楚了。当我什至不确定我想做什么时,很难解释!

macos xcode objective-c cursor nscursor

5
推荐指数
1
解决办法
540
查看次数

是什么导致CGDisplayCreateImageForRect捕获或忽略游标?

我正在使用osx捕获屏幕

capturedImage = CGDisplayCreateImageForRect(displayID, CGRectMake(point.x - 4, point.y - 4, 8, 8));
Run Code Online (Sandbox Code Playgroud)

这将返回光标下的屏幕部分.后来我正在设置一个自定义图像光标:

[[[NSCursor alloc] initWithImage:img hotSpot:NSMakePoint(4, 4)] set];
Run Code Online (Sandbox Code Playgroud)

设置光标并尝试再次捕获屏幕后,会出现此问题.光标包含在帧缓冲区中.这使得捕获的图像与我作为光标放置的图像相同.我试图隐藏光标,然后捕获屏幕,然后显示回来,但它不起作用,它也使光标闪烁.

更奇怪的是,在特定的笔记本电脑上没有捕获光标图像,而是在运行相同操作系统(Mountain Lion,Snow Leopard)的其他笔记本电脑上捕获光标图像.

什么可以导致光标包含在帧缓冲区中?有没有办法保证没有自定义光标的屏幕截图?

谢谢

cocoa screenshot objective-c nscursor

5
推荐指数
1
解决办法
749
查看次数

NSCursor的missingingItemCursor不在窗口外部设置

我有一个包含状态的弹出状态栏应用程序NSTableView。当将一行拖到表外时(拖放在这里完全起作用,这不是问题的重点),我将光标更改为the指针,否则称为[NSCursor disappearingItemCursor]

- (void)draggingSession:(NSDraggingSession *)session movedToPoint:(NSPoint)screenPoint {
    if (self.draggedRowCanBeDeleted) {
        BOOL outside = !NSPointInRect(screenPoint, window.frame);
        if (outside) {
            [[NSCursor disappearingItemCursor] set];
        } else {
            [[NSCursor arrowCursor] set];
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是非常不可靠的,因为有时它有时不起作用。它通常在第一次尝试时起作用,但是在此之后退出工作。我似乎找不到我要拖动的东西或拖动行进多远等的模式,只是看起来很不稳定。我在这里做错什么了吗?如果没有,我可以做些什么来帮助诊断问题吗?




更新
我也尝试了push/ pop路由,问题仍然存在。

- (void)draggingSession:(NSDraggingSession *)session movedToPoint:(NSPoint)screenPoint {
    if (self.draggedRowCanBeDeleted) {
        BOOL outside = !NSPointInRect(screenPoint, window.frame);
        if (outside) {
            if (!_showingPoof) {
                _showingPoof = YES;
                [[NSCursor disappearingItemCursor] push];
            }
        } else {
            if (_showingPoof) {
                _showingPoof = NO;
                [[NSCursor disappearingItemCursor] pop];
                // …
Run Code Online (Sandbox Code Playgroud)

cocoa drag-and-drop objective-c nstableview nscursor

5
推荐指数
0
解决办法
389
查看次数

Cocoa预定义调整鼠标光标?

是否使用预览(例如调整形状大小时)系统光标时调整大小的鼠标光标?

在此输入图像描述

它不能直接作为方法使用,NSCursor但它看起来不像预览应用程序包中的光标有私有资源.

除了NSCursor类定义的方法之外还有更多的系统游标吗?

cocoa objective-c appkit nscursor

5
推荐指数
1
解决办法
911
查看次数

如何在全球范围内更改NSCursor?

我正在开发具有多个窗口和视图(NSTextView等)的应用程序。

我想在我的应用程序中全局更改游标,以便即使游标输入trackingRectof(例如)的,NSTextView它也不会更改。

这可能吗?


PS:我还需要恢复到通常的行为。

macos nstextview nscursor

5
推荐指数
1
解决办法
234
查看次数