كيف الزخم/بالقصور الذاتي انتقل العمل مع ماجيك ماوس على NSScrollView?

StackOverflow https://stackoverflow.com/questions/1849023

سؤال

عندما انتقل مع أحدث أبل ماجيك ماوس (على الأقل على 10.6 لا أستطيع تأكيد أي السابقة في Mac OS) يمكنك الحصول على بالقصور الذاتي انتقل مثل التمرير على اي فون (الذي هو بعد نفض الغبار من إصبعك إلى التمرير, لا تتوقف فجأة, ولكن بدلا من ذلك يتباطأ تدريجيا).هذا السلوك هو "مجانا" مع كل NSScrollViews ، يبدو.

هناك حالات استثنائية ، مثل تويتي for Mac (سمعت تويتي كانت مكتوبة مع جدول مخصص لعرض فئة الأعمال أقرب إلى كيف UITableView يعمل على اي فون).

سؤالي هو كيف انتقل آراء تعرف كيف تفعل هذا بالقصور الذاتي التمرير?تخميني هو الماوس [السائق] مرارا وتكرارا يرسل انتقل الأحداث مع الملطف انتقل حجم (أو شيء من هذا القبيل) على التمرير الفترة.ولكن أنا لست متأكدا كيف يعمل.

أواجه بعض التمرير مشاكل في scrollview الدرجة و أنا أحاول معرفة السبب (من الواضح أننا لا نملك شفرة المصدر تويتي أن نرى لماذا لا تحصل على التمرير السليم) ، ولكن أحاول فهم أفضل كيف يعمل من أجل حل مشاكلي الخاصة.

هل كانت مفيدة؟

المحلول

nsscrollView لا يعرف أي شيء عن الماوس السحري. يتم إجراء التمرير بالقصور الذاتي أحداث التمرير المتكررة.

يمكنك تجاوز Nsresponder's -scrollWheel: الطريقة واستخدام NSLOG لمعرفة كيفية تخفيف التمرير Magic Mouse من TrackPad والتمرير التقليدي.

مجموعات التمرير التقليدية deltaX و deltaY للإشارة إلى عدد "الأسطر" للتمرير.

أجهزة التمرير الملساء (TrackPads والماوس السحري) deviceDeltaX و deviceDeltaY للإشارة إلى عدد البكسل للتمرير.

بالإضافة إلى ذلك، يستخدم Magic Mouse scrollPhase للإشارة إلى أن التمرير بالقصور الذاتي قيد التقدم.

لاحظ أن deviceDeltaX و deviceDeltaY هي طرق خاصة من nsevent.

نصائح أخرى

إلى الانسحاب من الزخم ، إضافة @"لا" مفتاح @"AppleMomentumScrollSupported" في بداية التطبيق الخاص بك إلى الإعدادات الافتراضية للمستخدم (انظر ماجيك ماوس المطور ملاحظات الإصدار).لذلك كنت قد تجاوز ذلك تويتي بإضافة هذا الدخول إلى الإعدادات الافتراضية الخاصة بك من tweetue.

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

يتوفر الكود المصدري ل TuisCrollView هنا https://github.com/twitter/twui.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top