2

我正在创建一个需要特殊光标(而不是通常的箭头)的自定义视图。我正在使用 resetCursorRects 设置新光标及其区域,但新光标仅在鼠标进入矩形区域时短暂出现,返回箭头。

为了更好地检查,我创建了一个新项目,创建了一个新的自定义视图(基于 NSView),将其添加到窗口中,但问题仍然存在。自定义视图代码:

#import "TestView.h"

@implementation TestView

- (void)drawRect:(NSRect)dirtyRect {
    [super drawRect:dirtyRect];

    [[NSColor redColor]set];
    [NSBezierPath fillRect:self.bounds];
}

-(void)resetCursorRects
{
    [self addCursorRect:NSMakeRect(2, 2, 40, 40) cursor:[NSCursor openHandCursor]];
}

@end

我在 addCursorRect 之前尝试过 [super resetCursorRects] 或 [self discardCursorRects] 之类的东西,但没有任何反应。我做错什么了吗?

4

2 回答 2

1

您的代码是正确的,并且似乎在所有情况下都可以正常工作。

还有一些额外的方法来设置光标图像。也许他们对你有帮助,下面有 2 个例子。

1)您可以在自定义视图中设置跟踪区域并在该视图中使用 NSResponder cursorUpdate: 方法。像这样的东西:

// call when initializing view
- (void)updateTrackingAreas {
    [[NSTrackingArea alloc] initWithRect:self.visibleRect options: (NSTrackingCursorUpdate | NSTrackingEnabledDuringMouseDrag | NSTrackingActiveInActiveApp) owner:self userInfo:nil];
}

// NSResponder override in view
- (void)cursorUpdate:(NSEvent *)event {
    [[NSCursor openHandCursor] set];
}

2) 如果您在 ScrollView 中使用自定义视图,您可以使用 setDocumentCursor: ScrollView 的方法:

[self.scrollView setDocumentCursor:[NSCursor openHandCursor]];
于 2015-08-05T07:57:35.903 回答
0

通过重新启动解决... 经过数小时的工作,我发现这是系统中的某种错误,通过简单的重新启动即可解决。

谢谢大家的时间...

于 2015-08-06T09:01:25.580 回答