以前iOSでスクロールできないようにする記事を投稿しましたが、iOS10でうまくいかないことがあったので、別の対応方法を試してみました。
サンプルコード
モーダルを表示した時だけスクロールできないようにしてみます。
HTML
<button class="modal-link" data-modaibody="modal">モーダル表示</button> <div class="modal-bg"></div> <div class="modal-contents"> <button class="modal-close">閉じる</button> <p>モーダルの中身です。</p> </div>
要素にclassを追加して表示・非表示を切り替える形ですが、CSSは今回の内容と関係ないので紹介は省略します。
JavaScript
$(function() {
	$('.modal-link').on('click', function() {
		$('.modal-bg').addClass('is-show');
		$('.modal-contents').addClass('is-show');
		// タッチイベントを解除
		$(window).on('touchmove.is-fixed', function(e) {
			e.preventDefault();
		});
	});
	$('.modal-close').on('click', function() {
		$('.modal-bg').removeClass('is-show');
		$('.modal-contents').removeClass('is-show');
		// タッチイベントを復帰
		$(window).off('.is-fixed');
	});
});
コメントにも書いているタッチイベントの制御部分で、モーダルを開いた時にはタッチイベントでスクロールしないように、モーダルを閉じた時に解除するようにしています。
スクロールできないようにするとき
$(window).on('touchmove.is-fixed', function(e) {
	e.preventDefault();
});
スクロールできるようにするとき
$(window).off('.is-fixed');
これで意図したタイミングでスクロールさせないようにすることができました。
iOSでスクロールできないようにするデモページ
 

コメントが承認されるまで時間がかかります。