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?

È stato utile?

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.

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