Sto provando a sottoclasse NSCell
per disegnare un'evidenziazione di sfondo personalizzata. La documentazione sembra suggerire che l'override di highlight:withFrame:inView:
dovrebbe consentirmi di farlo, ma il metodo non viene mai chiamato.Evidenziatore personalizzato NSCell
Invece, ho sostituito drawInteriorWithFrame:inView:
che funziona correttamente: posso disegnare quello che voglio nella cella. Tuttavia, il problema è che devo disegnare tutto da solo, perdendo la funzionalità del tipo di NSCell I rivolgo - per esempio la capacità di un NSTextFieldCell per visualizzare il testo:
disegnato su misura evidenziata cella:
Tuttavia, voglio solo per ridisegnare lo sfondo (il momento clou), e mantenere la capacità di utilizzare la funzionalità principale della cella estesa:
Potrei, ovviamente, disegnare il testo anch'io, ma spero che ci sia un modo più semplice per farlo.
Qualsiasi aiuto è molto apprezzato.
Si sta inviando '[super drawInteriorWithFrame: cellFrame inView: controlView];' (con qualsiasi nome di parametro che si sta utilizzando) dopo aver disegnato lo sfondo personalizzato? –
@Bavarious: se lo faccio, lo sfondo personalizzato viene perso. Il risultato è lo stesso del secondo screenshot, poiché presumo che anche il metodo faccia lo stesso sfondo. – JoeR
Ah, gotcha. Non puoi impostare un colore di evidenziazione trasparente in modo che 'super' non interferisca con l'evidenziazione personalizzata, e quindi usi' -isHighlighted' all'interno di '-drawInterior ...' per decidere come disegnare lo sfondo? –