NSTextView et NSSearchField
Grambo
Membre
Bonjour,
D'après ce que j'ai compris le NSSearchField est tout à fait adapté pour faire une recherche dans une NSTextView simplement.
Sans une seule ligne de code, la recherche d'un mot dans ma NSTextView depuis le menu Edit->Find->Find... fonctionne comme je le souhaite (surlignage animé jaune du mot trouvé). On utilise pour cela la fonction performFindPanelAction qui est envoyée au FirstResponder.
Peut-on gérer le recherche depuis le NSSearchField de la même façon, sans écrire une seule ligne de code? Si oui, que faut-il faire dans IB pour établir la liaison entre le NSSearchField et la NSTextView.
Sinon je suppose qu'il faut écrire une fonction. Dans ce cas comment faire pour surligner le mot sans écrire une usine à gaz.
La réponse est sans doute simple, mais je ne maà®trise pas tout!
Merci d'avance.
D'après ce que j'ai compris le NSSearchField est tout à fait adapté pour faire une recherche dans une NSTextView simplement.
Sans une seule ligne de code, la recherche d'un mot dans ma NSTextView depuis le menu Edit->Find->Find... fonctionne comme je le souhaite (surlignage animé jaune du mot trouvé). On utilise pour cela la fonction performFindPanelAction qui est envoyée au FirstResponder.
Peut-on gérer le recherche depuis le NSSearchField de la même façon, sans écrire une seule ligne de code? Si oui, que faut-il faire dans IB pour établir la liaison entre le NSSearchField et la NSTextView.
Sinon je suppose qu'il faut écrire une fonction. Dans ce cas comment faire pour surligner le mot sans écrire une usine à gaz.
La réponse est sans doute simple, mais je ne maà®trise pas tout!
Merci d'avance.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il te faut donc coder (un peu) pour simuler la recherche dans la textView via performFindPanelAction.
Je te donne un petit exemple qui utilise la méthode action du search-field. Je ne l'ai pas testé donc à voir si ça va marcher...
Dans le code ci-dessus, l'outlet vers le search-field est searchField, et celui vers ta textView est textView .
Je viens d'essayer le code dans mon programme et cela ne fonctionne toujours pas. Le programme bipe à chaque fois que j'appuie sur entrée et que je suis sur le searchField.
J'ai même essayé de remplacer searchField par sender et j'obtiens le même résultat. J'ai également essayé avec d'autres tags, sans plus de succès.
Je ne sais plus dans quelle direction chercher...
Il faut dire que la doc est plus que succincte.
Pour que ça fonctionne bien (pilotage de la recherche), il faut que le find panel soit affiché.
Donc il ne te reste plus qu'à faire ton propre module de recherche.
Une solution simple (mais je ne sais pas dans quel cadre tu fais ta recherche) :
Le code utilise la méthode showFindIndicatorForRange: de NSTextView pour afficher temporairement un cartouche jaune autour de la première occurrence recherchée (et tapée dans le search-field).
J'ai simplement rajouté la fonction scrollRangeToVisible: pour m'assurer que le texte à mettre en évidence est bien affiché.