Cocoa:当它在NSButton上时更改光标

Mat*_* S. 15 cocoa cursor nsbutton

当它在NSButton上时,如何更改光标?

6 1*_*6 1 39

您应该首先继承NSButton,然后添加下面的代码.

- (void)resetCursorRects
{
    if (self.cursor) {
        [self addCursorRect:[self bounds] cursor: self.cursor];
    } else {
        [super resetCursorRects];
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以根据需要设置光标.

[self.button setCursor:[NSCursor pointingHandCursor]];
Run Code Online (Sandbox Code Playgroud)

注意:添加cursor为子类的属性,如下所示:

@property (strong) NSCursor *cursor;  
Run Code Online (Sandbox Code Playgroud)

  • @MottiShneor 在 -resetCursorRects 内调用 [super resetCursorRects] 本身并不违反“从不调用此”规则,因为您实际上并没有在应该调用它时调用它。 (2认同)

mas*_*all 17

[yourButton addCursorRect:[yourButton bounds] cursor:[theCursorYouWant]];
Run Code Online (Sandbox Code Playgroud)

  • 来自Apple文档:_此方法仅由resetCursorRects方法调用.如果以任何其他方式调用,则下次重建视图的光标矩形时,将丢弃生成的光标矩形.所以你必须继承NSButton. (17认同)