J'ai mis en œuvre la syntaxe de base en surbrillance en définissant correctement le Le processus de base est comme suit p> chaque fois que Qu'est-ce qui cause cela? P> p> NStextStorage code> délégué de mon NStextview Changement d'attributs de texte dans -TextStoragedIdProcessité code>. -removeattribute: plage: code> ou -Ajouter: valeur: plage code> est invoqué lorsqu'un caractère code> espace code> est entré, le nstextview code> s sur NSScrollView code> emplacement commence à sauter (le bouton de défilement passe à une position aléatoire près de la) P>
5 Réponses :
active l'appelant -Beginetiting code> et - questionnement code> à l'intérieur d'un -TextStoragedIdProcessité: code> n'est pas très sain! Je passe au nstextview code> S -DidCangetext code> à la place. P>
Ceci est incorrect et ne devrait pas être la réponse acceptée. La bonne réponse, par TRSS, diagnostit correctement le problème comme étant lié à la disposition non contiguë.
Eric. Je ne sais pas si vous avez résolu ceci. Cependant, j'ai rencontré un problème similaire et j'ai découvert que l'option "mise en page non contiguë" dans l'inspecteur des attributs Xcode 4.x pour le NStextView au cas où le problème résoudra le problème. La documentation pour NslayoutManager fournit plus d'indices (sous "Présentation"): "Layout non contigune est un comportement en option gestionnaire de mise en page Nouveau dans Mac OS X V10.5 ...". P>
Dans mon cas, j'ai connu ce comportement indépendamment de l'utilisation de méthodes de délégation ou de méthodes intermédiaires appelées via des notifications et ne s'est produite que lorsque le contenu de stockage de texte est devenu plus grand que la vue Texte joint, provoquant un défilement d'être actif et "poussant" la vue de texte jusqu'au sommet. Après avoir tourné l'option, le "saut" n'était plus observé. J'espère que ça aide. Tom p>
Pourquoi ne pas simplement supprimer -Beginetiting code> et - questionnement code> appels? Je viens d'avoir le même problème et cela résout le problème pour moi. P>
Mais assez étroitement, le problème semble réapparaître au hasard! Je suis incapable d'isoler la cause exacte. Mais je suis sûr que j'ai remarqué que le problème disparaisse instantanément une fois que j'ai supprimé -Beginetiting code> et - affectation code> appels. -DidCangetext code> semble être une bonne alternative bien que je ne l'ai pas encore essayé puisque la plupart des gens recommandent d'utiliser -textStoragedIdProcessité code> pour la mise en surbrillance de la syntaxe, même lorsque le programme est modifié à travers code.
J'ai enfin découvert de mes observations que le saut accumulait non seulement lorsque vous appuyez sur la barre d'espace, mais également pour d'autres clés telles que le retour arrière et cela arrive exactement quand ces deux sont tous les deux.
- la mise en page non contiguë est allumée de
- Toute modification, même aux attributs, du texte précédant la région visible est faite à l'intérieur -TextStoragedIdProcessité: code>
On dirait que c'est un bug dans la fonction de mise en page non contiguë! Serait bien si un expert pourrait confirmer.
Il semble avoir rien à voir avec appeler -Beginetiting code> et - questionnement code>. P>
Je faisais mon traitement dans Traitement code> dans un stockage de texte personnalisé. Déménager à la méthode de la déléguée a résolu mon problème. Merci!
Cela semble être la bonne réponse et devrait être la réponse acceptée. Désactiver la mise en page non contiguë dans IB fixe le problème. Autres correctifs proposés, tels que l'utilisation de didchangetext code> à la place ou n'utilisant pas Beginediting code> / Mise en scène code> intérieure textstoragedIdProcessité: code>, ne sont pas Une bonne idée, qu'ils évitent ou non ce bogue spécifique. Je viens de déposer ce bogue sur le journaliste du bogue d'Apple, # 24539235. S'il vous plaît déposer des bugs!
Résolu mon problème P> textview.layouttManager? .AllowsnoncontiguLayout = faux code> p>