iScroll - Yerel dikey kaydırmayı koruma - iOS'ta değil, Android'de çalışır

Mobil sayfadaki öğeler arasında gezinmek için iScroll.js kullanıyorum. Dikey hareketi dinleyen ve yerel dikey kaydırmanın gerçekleşmesini sağlayan iScroll komut dosyasını denetimi ele geçiren aşağıdaki düzeltmeyi buldum:

        onBeforeScrollStart: function(e) {
        try {
            point = e.touches[0];
            pointStartX = point.pageX;
            pointStartY = point.pageY;
        } catch(e) {}
        null;
    },
    onBeforeScrollMove: function(e) {
        try {
            deltaX = Math.abs(point.pageX - pointStartX);
            deltaY = Math.abs(point.pageY - pointStartY);
            if (deltaX >= deltaY) {
                e.preventDefault();
            } else {
                null;
            }
        } catch(e) {}
    }

Tarayıcıda test ederken bazı sorunlar yaşadığından {} catch {} kullanmayı deneyin (noktanın tanımlanmadığından şikayetçi oldum).

Sorun şu ki iOS'ta iyi çalışıyor, birkaç i-cihazda test ediliyor, ancak Android'de bu pek iyi değil. Bir kullanıcı sayfayı dikey olarak kaydırmaya çalışırsa, parmağınızı döner karta yerleştirerek başlayarak, iScroll hala denetimi olduğundan sayfa ilerlemez.

Android'de çalışmayı nasıl başarabileceğime dair herhangi bir fikriniz veya yanlış nereye gidebileceğine dair herhangi bir işaretçi var mı?

Düzenle:

Bazı hata ayıklama ve bunun neden çalışmadığını muhtemelen keşfettim. Kullanıcı ekranı iOS'a dokunduğunda koordinatlar güncelleniyor, ancak Android'de sadece ilk koordinat grubu takılıyor. Bunun neden olabileceği hakkında bir fikrin var mı?

7
myScroll.disable() ve myScroll.enable() kullanmayı denediniz mi?
katma yazar Adam Storr, kaynak

2 cevap

The creator of iScroll actually has a port that seems to work exactly as you describe by paging horizontally and still allowing vertical scrolling. https://github.com/cubiq/2-way-iScroll

0
katma

OnBeforeScrollMove için kapsamınızda "point" var gibi görünmüyor. Ayrıca, bazı Android cihazlar multitouch üzerinden tıklama olaylarını çağırabilir (bunu onaylayamıyorum, ancak yalnızca platform fragmantasyonu nedeniyle teorileştiriyorum)

Kısa bir süre sonra yayınları tıklayacağım ve dokunuşun belirleyici özelliği olan "mouse" u kullanarak benzersiz bir çok dokunuşlu bir olayı taklit edeceğimi ve bazı yardımlarda/hata ayıklamalarında kullanabileceğim güzel bir senaryo var. Projeyi yarın gece online hale getirmeye çalışacağım.

Eklenmesi gereken bazı güncellemeler ve projeler nedeniyle, ancak bir bağlantı:

https://github.com/skhameneh

DÜZENLEME: Düzeltme, "nokta" yı güncelliyor musunuz? Bu kodun dışına çıkarılmış gibi görünüyor ve içinde değişti. Kodunuzun geri kalanını gönderdiyseniz, yardımcı olabilir.

0
katma