2010-05-27 86 views

回答

17
[yourButton addCursorRect:[yourButton bounds] cursor:[theCursorYouWant]]; 
+14

來自Apple文檔:_此方法旨在僅由resetCursorRects方法調用。如果以任何其他方式調用,則在下次視圖的光標矩形被重建時,所得到的光標矩形將被丟棄。所以你必須繼承NSButton。 – Kentzo 2012-04-03 07:09:31

0

讓按鈕添加一個遊標矩形。

+3

我怎麼做, – 2010-05-27 23:12:41

+6

當時所必需的反對票?快速搜索「遊標矩形」的文檔告訴你很多。 – 2010-05-27 23:43:27

+1

@JoshuaNozzi是的,因爲這本身並不是一個有用的答案。 – 2016-08-05 13:03:44

34

您應該首先繼承NSButton,然後添加下面的代碼。

- (void)resetCursorRects 
{ 
    if (self.cursor) { 
     [self addCursorRect:[self bounds] cursor: self.cursor]; 
    } else { 
     [super resetCursorRects]; 
    } 
} 

現在你可以設置光標,只要你喜歡。

[self.button setCursor:[NSCursor pointingHandCursor]]; 

注:添加cursor爲你的子類的屬性,如:

@property (strong) NSCursor *cursor; 
+1

你可以在答案上擴大一點。 NSButton沒有遊標實例變量?我不明白你的答案。 – 2013-01-27 12:57:55

+0

爲了應用懸停光標,在UI中爲每個按鈕創建子類似乎是不合理的。在告訴你不應該直接調用addCursorRect之後,docs還告訴你不要直接調用「resetCursorRects」,而只需調用NSWindow方法中的「invalidateCursorRects」。 – 2014-04-07 21:54:20

+0

@MottiShneor在-resetCursorRects中調用[super resetCursorRects]本身並不違反「從不調用此規則」的規則,因爲當它無論如何都沒有實際調用它時。 – 2015-08-07 12:39:33