Я провел два дня, борясь с той же проблемой. Кажется, наконец-то я нашел решение.
Первое, что вы должны попробовать - это использовать новую встроенную функцию, представленную в iOS 5.
-webkit-overflow-scrolling:touch;
Вам нужно обернуть свой iframe с помощью div, что-то вроде:
...
this.html = '<div style="-webkit-overflow-scrolling:touch; height: 500px; overflow: auto;"><iframe .../></div>'
...
Если это не сработает (в моем случае это сработало только в первый раз), то вы можете попробовать обработать сенсорные события самостоятельно. Допустим, у вас есть следующая структура в html:
<div id="wrapper">
<iframe id="my-iframe" .../>
</div>
чтобы сделать прокрутку iframe, вам нужно добавить этот JS
var startY = 0;
var startX = 0;
var ifrDocument = document.getElementById("my-iframe").contentWindow.document;
ifrDocument.addEventListener('touchstart', function (event) {
window.scrollTo(0, 1);
startY = event.targetTouches[0].pageY;
startX = event.targetTouches[0].pageX;
});
ifrDocument.addEventListener('touchmove', function (event) {
event.preventDefault();
var posy = event.targetTouches[0].pageY;
var h = document.getElementById("wrapper");
var sty = h.scrollTop;
var posx = event.targetTouches[0].pageX;
var stx = h.scrollLeft;
h.scrollTop = sty - (posy - startY);
h.scrollLeft = stx - (posx - startX);
startY = posy;
startX = posx;
});
Источник второго решения здесь