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



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

我阅读了很多关于NSTrackingAreas的信息,测试了很多示例,设置了不同的跟踪选项并实施了不同的方法,但光标仍然是工字梁。我已经阅读了它是AppKit自动功能,那么我该如何防止这种情况?

谢谢!

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

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

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

这对

我使用 Swift 3 有用:

class HyperlinkTextField : NSTextField {
    override func resetCursorRects() {
        discardCursorRects()
        addCursorRect(self.bounds, cursor: NSCursor.pointingHand())
    }
}

相关内容

  • 没有找到相关文章

最新更新