Come posso cambiare il cursore quando si trova su un NSButton?Cacao: cambia il cursore quando è su un NSButton
risposta
[yourButton addCursorRect:[yourButton bounds] cursor:[theCursorYouWant]];
Fare in modo che il pulsante aggiunga un cursore rect.
come faccio che –
era il down-voto necessario? Una rapida ricerca della documentazione per "cursore retto" ti dice molto. –
@JoshuaNozzi si, poiché questo non è, in sé e per sé, una risposta utile. –
È necessario innanzitutto sottoclasse NSButton, quindi aggiungere il codice seguente.
- (void)resetCursorRects
{
if (self.cursor) {
[self addCursorRect:[self bounds] cursor: self.cursor];
} else {
[super resetCursorRects];
}
}
Ora è possibile impostare il cursore come desiderato.
[self.button setCursor:[NSCursor pointingHandCursor]];
Nota: aggiungi cursor
come una proprietà della sottoclasse, in questo modo:
@property (strong) NSCursor *cursor;
Potresti ampliare un po 'la tua risposta. NSButton non ha una variabile di istanza del cursore? Non capisco la tua risposta. –
La sottoclasse di ogni singolo pulsante che ho nell'interfaccia utente solo per applicare un cursore in movimento sembra irragionevole. Dopo averti detto che non dovresti chiamare direttamente addCursorRect, i documenti ti dicono anche di non chiamare mai "resetCursorRects" e di chiamare "invalidateCursorRects", che è un metodo NSWindow. –
@MottiShneor Chiamare [super resetCursorRects] all'interno diresetCursorRects non viola la regola "never call this", in quanto in realtà non lo si sta invocando. –
Da documenti Apple: _Questo metodo deve essere richiamato solo dal metodo resetCursorRects. Se invocato in un altro modo, il rettangolo del cursore risultante verrà eliminato la volta successiva che i rettangoli del cursore della vista verranno ricostruiti_. Quindi devi sottoclasse NSButton. – Kentzo