2009-09-02 7 views
1

J'ai remarqué dans l'Interface Builder que si je veux cliquer sur ou faire glisser depuis le panneau Bibliothèque, il me suffit de cliquer dessus une fois, même si le panneau Bibliothèque n'a pas le courant concentrer. J'essaie de construire un panneau qui se comporte de la même manière.NSTableView répondant au premier clic dans un panneau

Y at-il un moyen simple de laisser le NSTableView accepter le clic, même si la fenêtre n'a pas le focus?

Merci.

Répondre

1

Ok, j'ai trouvé la réponse. À l'intérieur de awakeFromNib j'appelle ceci: [self setBecomesKeyOnlyIfNeeded: YES];

Il semble faire l'affaire. C'est un peu différent d'Interface Builder où le Panel obtient réellement le focus simultanément avec un seul clic, mais le faire de cette façon est exactement ce que je cherchais.

+0

Heureux que ça a marché. Ma réponse ci-dessous vous permettra de vous concentrer simultanément sur le clic et fonctionnera pour n'importe quelle vue, pas seulement pour NSPanels. Mais si cela répond à vos besoins, alors c'est évidemment beaucoup plus simple, et ne dérobe pas le focus du clavier à la keyWindow actuelle (c'est bon ou mauvais, selon vos besoins). –

+0

Avez-vous dû définir autre chose dans le fichier XIB ou dans le code? J'essaye de faire fonctionner ceci avec un NSCollectionView, et échoue jusqu'ici entièrement. –

+0

Désolé de prendre si longtemps pour répondre ... Je viens de remarquer ce commentaire. Avez-vous essayé "setBecomesKeyOnlyIfNeeded"? Cela n'a-t-il pas fonctionné? – chaimp

1

Votre vue doit remplacer -acceptsFirstMouse: pour renvoyer YES (ou évaluer l'événement qui vous a été transmis pour déterminer les éléments à retourner). Vous devrez sous-classer NSTableView pour faire cela bien sûr.

+0

J'ai fini par ne pas avoir à faire cela, mais en définissant simplement la propriété "getsKeyOnlyIfNeeded" du Panel dans lequel se trouvait la Table. Mais merci d'y répondre. – chaimp

Questions connexes