Если содержимое iFrame не принадлежит вам, приведенное ниже решение не будет работать.
В Android все, что вам нужно сделать, это окружить iframe с помощью DIV и установить высоту в div на document.documentElement.clientHeight. IOS, однако, другое животное. Хотя я еще не пробовал решение Шарона, оно кажется хорошим решением. Я нашел более простое решение, но оно работает только с IOS 5. +.
Окружите свой элемент iframe с помощью DIV (давайте назовем его скроллер), установите высоту DIV и убедитесь, что новый DIV имеет следующий стиль:
$('#scroller').css({'overflow' : 'auto', '-webkit-overflow-scrolling' : 'touch'});
Это само по себе будет работать, но вы заметите, что в большинстве реализаций содержимое в iframe становится пустым при прокрутке и в основном становится бесполезным. Насколько я понимаю, такое поведение было сообщено Apple как ошибка еще в iOS 5.0. Чтобы обойти эту проблему, найдите элемент body в iframe и добавьте -webkit-transform ',' translate3d (0, 0, 0) примерно так:
$('#contentIframe').contents().find('body').css('-webkit-transform', 'translate3d(0, 0, 0)');
Если ваше приложение или iframe сильно загружены памятью, вы можете получить автопрокрутку, для которой вам может понадобиться решение Шарона.