In cacao, qual è il modo migliore per cambiare il cursore quando si passa sopra una vista circolare?

StackOverflow https://stackoverflow.com/questions/1169639

  •  19-09-2019
  •  | 
  •  

Domanda

Quello che voglio fare

Ho una circolare personalizzato NSView sottoclasse, e voglio cambiare l'aspetto del cursore quando il mouse passa sopra le porzioni circolari della vista, ma non quando sopra le porzioni di rettangolo della vista che non rientrano nel cerchio.

Ecco un'illustrazione . Avrei inline con un tag di immagine, ma io sono troppo nuovo per partecipare di tali caratteristiche impressionanti.

Quello che so finora

Io so come cambiare l'aspetto del cursore attraverso NSCursor. Credo che il modo migliore per realizzare questo per una vista rettangolare sarebbe con un rettangolo cursore. So che ho potuto ricevere gli eventi mouseMoved (e deve disattivarli quando il mouse non è su questa visione, utilizzando mouseEntered e mouseExited), e hanno un modo semplice e poco costoso per determinare se un punto si trova nella regione di interesse.

Allora, qual è il problema allora?

Per quanto posso dire, il sistema non invia gli eventi mouseMoved ad una vista che non è la prima responder. Pertanto, se voglio ottenere eventi mouseMoved quando il mouse passa sopra mio punto di vista, ho bisogno di rubare firstResponder stato da chi ha attualmente. Se una vista testo ha l'attivo, semplicemente spostando il mouse su tale orientamento avrebbe rubare lontano, che è semplicemente inaccettabile dal punto di vista usabilità.

Quindi, la mia domanda si riduce a: esiste un modo migliore per fare questo? Posso ottenere eventi mouseMoved senza essere il primo risponditore?

Grazie!

avrei aggiunto i seguenti tag: Su vista del mouse-eventi NSCursor firstResponder Ma ancora una volta, io sono un niubbo SA in modo da non posso.

È stato utile?

Soluzione

Credo che si può solo bisogno di sovrascrivere il metodo acceptsFirstResponder nel vostro NSView per tornare SI. Se non lo fai, poi la vista non riceverà alcuna informazione evento.

Altri suggerimenti

Essa non deve essere una zona circolare? Se ovunque entro i limiti rettangolari della vista è accettabile, è possibile utilizzare un cursore rect .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top