NSCollectionViewItem dietro un NSTextfield
-
12-11-2019 - |
Domanda
Ho un NSTextField
dalla vista di un NSCollectionViewItem
.
Quando fai clic su un NSCollectionViewItem
L'articolo è selezionato.
Quando fai clic su NSTextField
ottiene concentrazione, ma il NSCollectionViewItem
che è dietro il campo di testo non viene selezionato.
Voglio cambiare quest'ultimo comportamento in modo che il campo di testo si concentri e anche l'elemento di visualizzazione viene selezionato.
Qual'è il miglior modo per farlo?
Soluzione
Credo che dovresti sottoclasse Nstextfield e sovrascrivere Mousedown per passare l'evento al NexTresponder (che dovrebbe essere impostato sulla tua vista di raccolta)
Altri suggerimenti
Ho anche un NSCollectionViewItem che contiene un NSTextfield. Sto cercando di ricreare l'aspetto di base e la sensazione dell'etichetta di testo di un'icona nel Finder. Non l'ho ancora finito, ma quello che ho finora sembra rispondere a questa domanda.
La chiave è che il campo di testo inizi come non selezionabile. Un clic del mouse sul campo di testo verrà ignorato dal campo di testo e selezionerà l'elemento Visualizza raccolta. Quindi, nel metodo SetSelection dell'elemento di visualizzazione della raccolta, quando viene selezionato, imposta il campo di testo come modificabile. Il prossimo mouse clic sul campo di testo gli darà attenzione. Quindi, quando l'elemento Visualizza di raccolta non viene selezionato, ripare il campo di testo non selezionabile e attendere che l'elemento di visualizzazione della raccolta venga nuovamente selezionata.
-(void)awakeFromNib
{
[self.textField setSelectable:NO];
}
-(void)setSelected:(BOOL)selected
{
[super setSelected:selected];
if (self.selected)
{
[self.textField setEditable:YES];
}
else
{
[self.textField setSelectable:NO];
}
}
Questo risponde alla domanda di cui sopra, ma ovviamente è necessario di più per una soluzione completa.