Frage

Wenn Sie mit dem neueren Apple Magic Mouse scrollen (zumindest auf 10,6, kann ich nicht all früheren Mac OS bestätigen) Sie Trägheits scroll bekommen wie auf dem iPhone Scrollen (das heißt, nach einer Fingerbewegung zu bewegen, es nicht abrupt zu stoppen, sondern allmählich verlangsamt). Dieses Verhalten ist „kostenlos“ mit allen NSScrollViews, wie es scheint.

Es gibt Ausnahmefälle, wie Tweetie für Mac (ich habe gehört, Tweetie mit einer benutzerdefinierten Tabellenansicht Klasse geschrieben wurde, die ähnlich funktioniert, wie UITableView funktioniert auf dem iPhone).

Meine Frage ist, wie Sie wissen die Scroll-Ansichten wie diese Inertial Scrolling zu tun? Meine Vermutung ist, die Maus [Fahrer] sendet wiederholt Scroll-Ereignisse mit einer Feucht Scroll-Größe (oder so ähnlich) über die Scroll-Zeit. Aber ich bin nicht wirklich sicher, wie es funktioniert.

Ich habe einige Scrollen Probleme in meiner Scroll Klasse und ich versuche, herauszufinden, warum (natürlich wir nicht sehen, den Quellcode zu Tweetie müssen, warum es nicht die richtigen Scrollen bekommt), sondern nur versucht, besser zu verstehen, wie es funktioniert, um meine eigenen Probleme zu beheben.

War es hilfreich?

Lösung

NSScrollView weiß nichts über die Magic Mouse. Die Inertial Scrolling durch wiederholte Scroll-Ereignisse durchgeführt wird.

Sie können NSResponder die -scrollWheel: Methode überschreiben und NSLog verwenden, um zu sehen, wie Magic Mouse Scrollen von Trackpad und traditionellen Scrollen unterscheidet.

Traditionelle Scrolling-Sets deltaX und deltaY die Anzahl der "Linien", um anzuzeigen, zu blättern.

Glatte Scrollen Geräte (Trackpads und die Magic Mouse) verwenden deviceDeltaX und deviceDeltaY die Anzahl der Pixel, um anzuzeigen, zu blättern.

Zusätzlich Magic Mouse nutzt scrollPhase um anzuzeigen, wenn ein Trägheits Scroll im Gang ist.

Beachten Sie, dass deviceDeltaX und deviceDeltaY sind private Methoden von NSEvent.

Andere Tipps

, um die Dynamik zu entscheiden, fügt @ „NO“ für den Key @ „AppleMomentumScrollSupported“ ganz am Anfang Ihrer Anwendung auf die Benutzereinstellungen (siehe Magic Mouse Entwickler Release Notes). Sie könnten also auch für Tweetie außer Kraft setzen, indem Sie diesen Eintrag auf Ihre Standardwerte von tweetue.

 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"NO" forKey:@"AppleMomentumScrollSupported"];
 [defaults registerDefaults:appDefaults];

Der Quellcode für TUIScrollView verfügbar ist hier https://github.com/twitter/twui

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top