Mavericks: comment désactiver le défilement réactif

10

Le défilement réactif me cause beaucoup de problèmes. C'est bien quand ça marche, mais ça traîne beaucoup parfois, surtout dans Chrome.

Quelqu'un a-t-il découvert un moyen de désactiver le défilement réactif et de faire en sorte que le défilement se comporte comme dans 10.8? Soit globalement, soit par application.

Pendant la vidéo WWDC "Optimisation du dessin et du défilement sur OS X", l'ingénieur Apple utilise ce qui ressemble à un fichier AppleScript pour désactiver le défilement réactif à l'échelle mondiale, donc c'est possible, mais je ne sais pas comment.

bogdansrc
la source
1
Le défilement "réactif" est absolument terrible pour moi sur un MacBook 2009. J'ai eu d'excellentes performances de défilement avec Mountain Lion, mais maintenant le défilement est si saccadé que je ne peux pas faire défiler pour voir ce que je veux regarder. C'est vraiment frustrant.
OregonTrail du
Cela décrit parfaitement les problèmes que j'ai ... Pour ce que ça vaut, je suis sur un MacBook Pro 2012.
bogdansrc
@bogdansrc En termes de Chrome, avez-vous essayé de le supprimer puis de le réinstaller?
Simon
@Simon oui, j'ai essayé. C'est également sur une nouvelle installation de Mavericks.
bogdansrc

Réponses:

4

Tout d'abord, je poste ces informations comme des informations utiles possibles plutôt que comme une solution. Ce qui peut amener quelqu'un dans la bonne direction.


J'ai trouvé cela dans le Quoi de neuf dans OSX qui explique en quoi et comment fonctionne le défilement réactif.

En bas, il y a aussi une note indiquant comment la désactiver par application à des fins de test.

Mais je ne vois pas cette option dans mes propres applications intégrées ou dans d'autres.

Défilement réactif

Le défilement réactif est une amélioration AppKit qui rend le défilement plus fluide. Cela implique deux changements importants dans la façon dont votre application dessine le contenu:

Les vues de défilement demandent à leurs vues enfant de dessiner du contenu supplémentaire en dehors de leur zone de vue normale afin que le contenu puisse être immédiatement mis à disposition à des fins de défilement. Ce support de fenêtre supplémentaire est stocké dans une mémoire purgable pour minimiser la pagination supplémentaire. Le fil de défilement tente de redessiner la vue à 60 images par seconde, mais il recule si l'application n'est pas en mesure de suivre. Les événements de défilement sont traités sur un fil d'arrière-plan. La plupart des applications reçoivent automatiquement ce comportement de défilement réactif. Cependant, certaines vues doivent explicitement être activées, notamment les vues avec support de calque, les vues de défilement personnalisées ou les sous-classes de vue de clip qui remplacent drawRect:, les vues de document basées sur NSSurface, les vues de document transparentes et les vues de document qui remplacent la méthode lockFocus.

Pour les vues dans lesquelles le défilement réactif est automatiquement activé, le changement de comportement doit être entièrement transparent pour vous en tant que développeur. Cependant, si votre application présente un comportement inhabituel lors du défilement, veuillez signaler les bogues.

Remarque: Vous pouvez désactiver temporairement le défilement réactif à des fins de test en choisissant Fichier> Obtenir des informations sur votre application dans le Finder. Après avoir modifié le paramètre, vous devez quitter et relancer votre application. Pour plus de détails, voir les notes de mise à jour AppKit pour OS X v10.9.

J'ai jeté un coup d'œil aux notes de version de l' appkit -Responsive Scrolling qui va plus en détail.

Certaines conditions devraient empêcher l'attribution d'un défilement réactif à une application. L'un d'eux est:

Les liens d'application sur 10.7 ou antérieur (l'application doit être liée sur Mountain Lion ou supérieur pour prendre en charge cette fonctionnalité)

Je suppose que si l'application est conçue pour fonctionner également sur 10.6, cette fonctionnalité ne sera pas ajoutée.

Chrome AFAIK fonctionnera à partir de 10,6. Mais je soupçonne que le téléchargeur télécharge une version pour votre système actuel.

Peut-être qu'une version construite pour 10.6 seulement le désactiverait dans Chrome.


MISE À JOUR * Mais comme le souligne bogdansrc dans les commentaires. Il n'y a pas de version unique pour 10.6


J'ai essayé:

defaults write ~/Library/Preferences/com.google.Chrome isCompatibleWithResponsiveScrolling -bool NO

Mais isCompatibleWithResponsiveScrolling est pour une sous-classe nsview et je ne m'attends pas vraiment à ce que cela fonctionne. Je ne reçois pas non plus ce problème, donc je ne peux pas le dire.

markhunte
la source
Cela ressemble à un hack intéressant
New Alexandria
L'hypothèse "fonctionne sur 10.6 => n'a pas de défilement réactif" est incorrecte. Il s'agit du SDK avec lequel l'application est liée. Vous pouvez avoir un lien d'application contre le SDK 10.9 et fonctionner correctement sur 10.6. Pour autant que je sache, l'approche générale consiste à créer un lien sur le dernier SDK, donc très probablement Chrome le fait. Sinon, il n'aurait pas de défilement réactif. Il n'y a pas plusieurs versions de Chrome en fonction de la version d'OS X que vous utilisez. C'est bête.
bogdansrc
Ce que j'essaie essentiellement de dire et d'interpréter de façon incorrecte ou incorrecte à partir d'une note de pomme, c'est que si le sdk de base est 10,6 et qu'il n'est pas lié à un autre ci-dessus, si je comprends bien, l'application n'aura pas de RS. Vous commencez si bien mais ensuite vous avez gâché en insultant avec "C'est idiot". Un simple "Il n'y a pas 10.6 que Chrome" aurait suffi. Les applications peuvent avoir des builds pour des OS plus anciens qui ne s'installeront pas ou ne fonctionneront pas sur le dernier OS. C'est à cela que je pensais.
Markhunte
4

MISE À JOUR (7.XI.2013 après appel à Apple Care):

J'avais aussi besoin de:

1) réinitialisation de la PRAM (après la désactivation, la mise sous tension tout en maintenant CMD + ALT + P + R jusqu'au deuxième gong), comment sur votre Mac: https://support.apple.com/kb/ht1379

2) réinitialisation de SMC (après la mise hors tension, la mise sous tension tout en maintenant SHIFT + CTRL + ALT (option) + POWER) comment sur votre mac: https://support.apple.com/kb/HT3964

LE RÉGLAGE CI-DESSOUS DEVRAIT ÊTRE: avec inertie


Ce n'est probablement PAS la solution permanente, mais un hack rapide et confortable par rapport au redémarrage du système.

Ça a marché pour moi. Désolé, les captures d'écran sont en polonais. Quoi qu'il en soit, vous devez le gérer grâce à des images / icônes.

Première accessibilité ouverte à partir des Préférences Système

entrez la description de l'image ici

Ensuite, dans les paramètres du pavé tactile / de la souris, cliquez sur le bouton du pavé tactile

entrez la description de l'image ici

Jouez ensuite avec / sans inertie.

entrez la description de l'image ici

andilabs
la source
Je pense que le défilement réactif est différent du défilement à inertie ...
DanHickstein
1
@DanHickstein c'est une sorte de solution de contournement.
andilabs
Hmmmm, je pense que le défilement réactif est une nouvelle chose pour faire fonctionner le défilement à 60 ips, comme discuté ici: developer.apple.com/library/mac/releasenotes/MacOSX/… Je ne suis pas sûr que cela ait quelque chose à voir avec le défilement inertiel.
DanHickstein
Peut être pas. Mais moi et peu d'utilisateurs ont compris que jouer avec interial permet de se débarrasser des problèmes de frezzing dans Chrome.
andilabs
2
La désactivation du défilement inertiel n'est pas une option pour moi (je déteste le défilement non inertiel). De plus, le défilement réactif n'est pas lié au défilement inertiel. Vous obtenez toujours un défilement réactif avec ou sans inertie.
bogdansrc
1

J'ai demandé à John Siracusa sur Twitter:

https://twitter.com/siracusa/status/394988398009925632

@siracusa Avez-vous trouvé un moyen de désactiver le "défilement réactif" dans les non-conformistes? C'est étrange

Sa réponse a été très succincte:

https://twitter.com/siracusa/status/394988398009925632

@davidmarsh No.

Je suppose que cela ne signifie pas que vous ne pouvez pas le désactiver, juste que John ne sait pas comment le désactiver.

David
la source
2
Si John Siracusa ne sait pas comment, il est très probable que ce ne soit pas possible. arstechnica.com/apple/2013/10/os-x-10-9
1
Un ingénieur Apple l'a fait en utilisant ce qui ressemblait à un AppleScript lors de la session WWDC "Optimisation du dessin et du défilement sous OS X". La vidéo est disponible sur developer.apple.com/wwdc/videos . Cela ne signifie pas que c'est toujours possible dans la dernière version de Mavericks.
bogdansrc