Pertanyaan Div scrolling kadang-kadang membeku jika saya menggunakan -webkit-overflow-scrolling


jika saya gunakan -webkit-overflow-scrolling untuk div yang digulir, gulir sempurna dengan momentum asli. Namun, div itu sendiri kadang-kadang membeku dan tidak merespon gerakan jari saya. Setelah 2-3 detik kemudian, itu menjadi digulir lagi.

Saya tidak tahu bagaimana saya mereproduksi masalah ini. Tapi, seperti yang saya lihat, ada dua perilaku utama yang menciptakan situasi ini.

Pertama, Jika saya menunggu beberapa saat, misalnya 20 detik, dan menyentuh div, itu tidak merespons. Saya menunggu beberapa detik, dan itu akan berfungsi lagi.

Kedua, saya menyentuh beberapa kali dengan cepat, dan kemudian, itu menjadi beku, dan sekali lagi, setelah beberapa detik kemudian, ia mulai bekerja lagi.

Bagaimana saya bisa mencegah pembekuan ini?


32
2017-09-25 22:13


asal


Jawaban:


Ini adalah sebuah masalah terbuka tautan siapa yang dapat ditemukan di sini masalah di iOS

Salah satunya Solusi untuk masalah ini dapat ditemukan di sini di tautan GitHub ini github

Menurut masalah yang ditemukan di tautan GitHub yang diposting di atas - Beberapa langkah dapat dilacak untuk menghapus masalah pengguliran.

  • Komentar keluar dua baris berikut di ionic.js

    self.el.style.overflowY = 'hidden';
    
    self.el.style.overflowX = 'hidden';
    
  • Menggunakan cordova.plugins.Keyboard.disableScroll(true) untuk menggulir melalui keyboard tanpa gangguan

  • $ionicConfigProvider.scrolling.jsScrolling(true) Set ini menjadi benar di bagian konfigurasi.

  • Juga Dalam keadaan tertentu, luapan-luapan disetel ke "tersembunyi" tetapi tidak disetel kembali ke "gulir" lagi yang membuat layar membeku.

Semoga ini bisa membantu Anda.

/ * Langkah-langkah yang diperlukan untuk saya, ini tidak termasuk jawaban * /

/ * Saya dengan ini menyatakan atribusi penuh untuk diberikan ke halaman yang diposting github yang dinyatakan dalam tautan seperti di atas * /


5
2017-10-14 22:40



Bagi saya, pembekuan itu berulang dan terjadi ketika mencoba untuk menggulir ke atas atau bawah ketika sudah di bagian atas atau bawah, masing-masing. Perbaikannya adalah menambahkan beberapa pendengar untuk touchstart dan touchmove dan mendeteksi kasus-kasus ini dan event.preventDefault() satu m.

Sesuatu seperti berikut ini, di mana .scroller adalah div yang benar-benar akan bergulir (berubah menjadi scrollTop).

var lastY = 0; // Needed in order to determine direction of scroll.
$(".scroller").on('touchstart', function(event) {
    lastY = event.touches[0].clientY;
});

$('.scroller').on('touchmove', function(event) {
    var top = event.touches[0].clientY;

    // Determine scroll position and direction.
    var scrollTop = $(event.currentTarget).scrollTop();
    var direction = (lastY - top) < 0 ? "up" : "down";

    // FIX IT!
    if (scrollTop == 0 && direction == "up") {
      // Prevent scrolling up when already at top as this introduces a freeze.
      event.preventDefault();
    } else if (scrollTop >= (event.currentTarget.scrollHeight - event.currentTarget.outerHeight()) && direction == "down") {
      // Prevent scrolling down when already at bottom as this also introduces a freeze.
      event.preventDefault();
    }

    lastY = top;
});

Saya harap ini membantu jiwa miskin berikutnya yang menemui bug mengerikan ini! Semoga berhasil dan terus berjuang!


1
2017-08-07 18:12