Переходы D3 во время прокрутки IOS - PullRequest
0 голосов
/ 03 октября 2018

При использовании D3 в IOS (протестировано в версиях 8.1, 10.3.1 и 11.4) любые преобразования, вызываемые после .transition() в слушателе прокрутки, не применяются до тех пор, пока прокрутка не завершится.Например, если бы в функции прослушивания прокрутки было указано следующее, height не будет установлен до завершения прокрутки:

d3.select('.my-rect')
    .transition()
    .attr('height', () => {
        // assume `date` updated by scroll listener
        return myTimeScale(date);
    });

Если я удаляю .transition(), тогда все работает как ожидалось.

Если я введу операторы console.log, ясно, что myTimeScale(date) выполняется при каждом событии прокрутки / касания, но визуально ничего не меняется до тех пор, пока прокрутка не закончится и пользователь не уберет палец с экрана.

Здесь необходимо отметить пару важных вещей:

  • Это происходит даже при прослушивании событий touchmove и scroll
  • Это не похоже напроблема, связанная с инерцией прокрутки, потому что ничто не обновляется даже с полностью управляемой прокруткой

Я могу обойти эту проблему, но любопытно, если кто-нибудь знает, что вызывает ее.

...