Mavericks: jak wyłączyć responsywne przewijanie


10

Elastyczne przewijanie powoduje dla mnie wiele problemów. Jest fajnie, gdy działa, ale czasami jest bardzo opóźniony, szczególnie w Chrome.

Czy ktoś znalazł sposób na wyłączenie responsywnego przewijania i sprawienie, aby przewijanie zachowywało się jak w 10.8? Globalnie lub na aplikację.

Podczas wideo WWDC „Optymalizacja rysowania i przewijania w systemie OS X” inżynier Apple używa czegoś, co wygląda jak plik AppleScript, aby wyłączyć responsywne przewijanie globalnie, więc jest to możliwe, ale nie wiem, jak to zrobić.


1
„Reaktywne” przewijanie jest dla mnie absolutnie straszne na MacBooku 2009. Miałem świetną przewijanie z Mountain Lion, ale teraz przewijanie jest tak niepewne, że nie mogę przewijać widoku tego, na co chcę patrzeć. To naprawdę frustrujące.
OregonTrail,

To doskonale opisuje problemy, które mam ... Za to, co warto, jestem na MacBooku Pro 2012.
bogdansrc

@bogdansrc Jeśli chodzi o Chrome, próbowałeś go usunąć, a następnie zainstalować ponownie?
Simon

@ Simon tak, próbowałem tego. Dotyczy to również nowej instalacji Mavericks.
bogdansrc

Odpowiedzi:


4

Po pierwsze, zamieszczam te informacje jako możliwe pomocne informacje, a nie rozwiązania. Który może doprowadzić kogoś we właściwym kierunku.


Znalazłem to w Co nowego w OSX, który wyjaśnia, co i jak działa responsywne przewijanie.

Na dole znajduje się również informacja o tym, jak wyłączyć tę aplikację dla celów testowych.

Ale nie widzę tej opcji w moich własnych aplikacjach ani w żadnej innej.

Elastyczne przewijanie

Elastyczne przewijanie to rozszerzenie AppKit, które sprawia, że ​​przewijanie jest płynniejsze. Wymaga to dwóch istotnych zmian w sposobie rysowania treści przez aplikację:

Widoki przewijania proszą swoje widoki potomne o narysowanie dodatkowej zawartości poza normalnym obszarem widoku, aby umożliwić natychmiastowe udostępnienie treści do przewijania. To dodatkowe zabezpieczenie okna jest przechowywane w usuwalnej pamięci, aby zminimalizować dodatkowe stronicowanie. Przewijany wątek próbuje przerysować widok z prędkością 60 klatek na sekundę, ale wycofuje się, jeśli aplikacja nie jest w stanie nadążyć. Przewijane zdarzenia są przetwarzane w wątku w tle. Większość aplikacji automatycznie odbiera to responsywne przewijanie. Jednak niektóre widoki muszą jawnie się włączyć, w tym widoki oparte na warstwie, niestandardowe podklasy widoku przewijania lub widoku klipu, które zastępują drawRect:, widoki dokumentów oparte na NSSurface, przezroczyste widoki dokumentów i widoki dokumentów, które zastępują metodę lockFocus.

W widokach, w których responsywne przewijanie jest automatycznie włączone, zmiana zachowania powinna być całkowicie przezroczysta dla ciebie jako programisty. Jeśli jednak aplikacja przewija się w nietypowy sposób, zgłoś błędy.

Uwaga: Możesz tymczasowo wyłączyć responsywne przewijanie na potrzeby testowania, wybierając polecenie Plik> Uzyskaj informacje o aplikacji w Finderze. Po zmianie ustawienia musisz zamknąć i ponownie uruchomić aplikację. Aby uzyskać więcej informacji, zobacz Informacje o wersji AppKit dla systemu OS X 10.9.

Rzuciłem okiem na informacje o wydaniu pakietu - Reaktywne przewijanie, które jest bardziej szczegółowe.

Istnieją warunki, które powinny powstrzymać przypisywanie aplikacji do responsywnego przewijania. Jeden z nich jest:

Aplikacja łączy się w wersji 10.7 lub starszej (aplikacja musi linkować w Mountain Lion lub wyższej, aby obsługiwać tę funkcję)

Co rozumiem przez to, że jeśli aplikacja jest zbudowana tak, aby działała również na 10.6, to nie będzie miała tej funkcji dodanej.

Chrome AFAIK będzie działał od 10.6 w górę. Ale podejrzewam, że downloader pobiera wersję dla twojego obecnego systemu.

Być może wersja zbudowana tylko dla 10.6 wyłączyłaby ją w Chrome.


AKTUALIZACJA * Ale jak wskazuje bogdansrc w komentarzach. Nie ma jednej wersji dla 10.6


Próbowałem:

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

Ale isCompatibleWithResponsiveScrolling jest dla podklasy nsview i nie spodziewam się, że zadziała. Nie dostaję też tego problemu, więc nie mogę powiedzieć.


To wygląda na interesujący hack
Nowa Aleksandria,

Założenie „działa na 10.6 => nie ma responsywnego przewijania” jest nieprawidłowe. Od tego zależy SDK, do którego łączy się aplikacja. Możesz mieć link do aplikacji w stosunku do 10.9 SDK i działać dobrze na 10.6. O ile mi wiadomo, ogólnym podejściem jest połączenie najnowszego zestawu SDK, więc najprawdopodobniej Chrome to robi. Gdyby nie to, nie miałoby responsywnego przewijania. Nie ma wielu wersji Chrome opartych na używanej wersji systemu OS X. To głupie.
bogdansrc

To, co w zasadzie próbuję powiedzieć i zinterpretować z notatek jabłek niepoprawnie lub poprawnie, to to, czy Base SDD ma 10,6 i nie jest powiązane z żadnym z powyższych, o ile rozumiem, aplikacja nie będzie miała RS. Zaczynasz tak ładnie, ale potem go zepsujesz, obrażając „To jest głupie”. Wystarczyłoby proste „Nie ma tylko Chrome 10.6”. Aplikacje mogą mieć kompilacje dla starszych systemów operacyjnych, które nie będą instalowane ani działające w najnowszym systemie operacyjnym.
Właśnie

4

AKTUALIZACJA (7.XI.2013 po połączeniu z Apple Care):

Potrzebowałem również:

1) Resetowanie PRAM (po wyłączeniu, włączeniu trzymając CMD + ALT + P + R do drugiego gongu), jak to zrobić na komputerze Mac: https://support.apple.com/kb/ht1379

2) Resetowanie SMC (po wyłączeniu, włączeniu, trzymając SHIFT + CTRL + ALT (opcja) + POWER), jak to zrobić na komputerze Mac: https://support.apple.com/kb/HT3964

POWINIEN BYĆ: PONIŻEJ bezwładności


Prawdopodobnie NIE jest to trwałe rozwiązanie, ale szybki i wygodny hack w porównaniu do restartu systemu.

To zadziałało dla mnie. Przepraszamy, że zrzuty ekranu są w języku polskim. W każdym razie powinieneś zarządzać nim dzięki obrazom / ikonom.

Najpierw otwórz Dostępność z Preferencji systemowych

wprowadź opis zdjęcia tutaj

Następnie w ustawieniach Touchpad / Mouse kliknij przycisk touchpad

wprowadź opis zdjęcia tutaj

Następnie graj z / bez bezwładności.

wprowadź opis zdjęcia tutaj



1
@ DanHickstein to rodzaj obejścia.
andilabs

Hmmmm, myślę, że responsywne przewijanie to nowa rzecz, dzięki której przewijanie działa przy 60 fps, jak omówiono tutaj: developer.apple.com/library/mac/releasenotes/MacOSX/... Nie jestem pewien, czy ma to coś wspólnego z przewijanie bezwładnościowe.
DanHickstein

Może nie. Ale ja i niewielu użytkowników przekonałem się, że gra z interialem pozwala pozbyć się problemów z frezowaniem w Chrome.
andilabs

2
Wyłączenie przewijania bezwładnościowego nie jest dla mnie opcją (nienawidzę przewijania bezobsługowego). Również responsywne przewijanie nie ma związku z przewijaniem bezwładnościowym. Nadal masz responsywne przewijanie z bezwładnością lub bez niej.
bogdansrc

1

Zapytałem Johna Siracusa na Twitterze:

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

@ Siracusa Czy znalazłeś sposób, aby wyłączyć „responsive scrolling” w mavericks? To dziwne

Jego odpowiedź była bardzo zwięzła:

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

@davidmarsh No.

Myślę, że to nie znaczy, że nie możesz tego wyłączyć, tylko to, że John nie wie, jak to wyłączyć.


2
Jeśli John Siracusa nie wie jak, jest bardzo prawdopodobne, że nie jest to możliwe. arstechnica.com/apple/2013/10/os-x-10-9

1
Inżynier Apple zrobił to przy użyciu czegoś, co wyglądało jak AppleScript podczas sesji WWDC „Optymalizacja rysowania i przewijania w OS X”. Film jest dostępny na stronie developer.apple.com/wwdc/videos . To nie znaczy, że wciąż jest to możliwe w najnowszej wersji Mavericks.
bogdansrc
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.