Question

J'ai un NSTextField sur le point de vue d'un NSCollectionViewItem.

Lorsque vous cliquez sur un NSCollectionViewItem l'élément est sélectionné.

Lorsque vous cliquez sur le NSTextField il obtient le focus, mais l' NSCollectionViewItem qui est derrière le champ de texte n'est pas d'être sélectionné.

Je veux changer ce dernier comportement de sorte que le champ de texte est activé et l'affichage élément est sélectionné.

Quelle est la meilleure façon de le faire?

Était-ce utile?

La solution

Je crois que vous avez à la sous-classe NSTextField et remplacer mouseDown pour transmettre l'événement à la nextResponder (qui devrait être mis à votre vue de collection)

Autres conseils

J'ai aussi un NSCollectionViewItem qui contient un NSTextField.Je suis en train de recréer la base look and feel de l'étiquette de texte d'une Icône dans le Finder.Je n'ai pas fini encore, mais ce que j'ai jusqu'à présent semble répondre à cette question.

La clé est d'avoir le champ de texte de départ comme PAS sélectionnable.Un clic de souris sur le champ de texte sera ignoré par le champ de texte et sélectionnez l'affichage de la collection de l'élément.Alors dans l'affichage de la collection de l'élément de setSelection méthode, lorsqu'il est sélectionné, définissez le champ texte modifiable.Le prochain clic de souris sur le champ de texte sera de donner le focus.Puis, quand l'affichage de la collection est l'élément non sélectionné, définissez le champ de texte du retour pour ne pas sélectionnable et attendre l'affichage de la collection de l'élément à être sélectionné à nouveau.

-(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];
    }
}

Ceci répond à la question ci-dessus, mais de toute évidence, il en faut plus pour une solution complète.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top