将光标设置为指向文本视图的手

ber*_*fis 5 cursor nstextview nstrackingarea

有没有办法在不继承 NSTextView 的情况下将光标设置为指向文本视图的指针?

我阅读了很多关于 NSTrackingAreas 的内容,测试了很多示例,设置了不同的跟踪选项并实现了不同的方法,但光标仍然是 I-Beam。我已经读到它是 AppKit 自动功能,那么我该如何防止这种情况发生?

谢谢!

ber*_*fis 4

我不得不子类化。经过几个小时测试了很多方法和选项,这终于奏效了:

\n\n
@implementation ATTextView\n\n- (id)initWithFrame:(NSRect)frame\n{\n    self = [super initWithFrame:frame];\n    if (self) {\n        _trackingArea = [[NSTrackingArea alloc]initWithRect:[self bounds] options: (NSTrackingMouseMoved | NSTrackingActiveInKeyWindow) owner:self userInfo:nil];\n        [self addTrackingArea:_trackingArea];\n    }\n    return self;\n}\n\n- (void)mouseMoved:(NSEvent *)event\n{\n    if ([self isEditable]) [[NSCursor IBeamCursor] set];\n    else [[NSCursor pointingHandCursor] set];\n}\n\n- (void)updateTrackingAreas {\n    [super updateTrackingAreas];\n    [self removeTrackingArea:_trackingArea];\n    _trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] options: (NSTrackingMouseMoved | NSTrackingActiveInKeyWindow) owner:self userInfo:nil];\n    [self addTrackingArea:_trackingArea];\n}\n@end\n
Run Code Online (Sandbox Code Playgroud)\n\n

只是为了找到正确的示例(Cocoa 80% 是文档阅读,20% 是编码):\n https://developer.apple.com/library/mac \xe2\x80\xa6 0i-CH8-SW1

\n