كيف الزخم/بالقصور الذاتي انتقل العمل مع ماجيك ماوس على NSScrollView?
-
13-09-2019 - |
سؤال
عندما انتقل مع أحدث أبل ماجيك ماوس (على الأقل على 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.