IOSでWeChatは入力ボックスでキーボードを弾いた後、ページが回復しません.下にメモがあります.

1263 ワード

iosでは、キーボードがはじけばページが上に移動し、入力ボックスが画面の真ん中に表示され、キーボードが隠れているページが元に戻るように移動します.
6.7.4バージョンでは、戻ることはありません.これは相対的な位置付け(fixed、absoute:ブラウザフォームに対して)のノードがシフトし、ノードがイベントオフセットをクリックして選択できなくなります.
ソリューション:入力ボックスがフォーカスを失う(すなわち、キーボードが非表示の場合)、手動でページを調整します.document.activeElement.scrollIntoViewIfNeed(true)
各入力ボックスがフォーカスを失うと、以下のイベントに応答すればいいです.
ページに下記のコードを挿入すればいいです.

	var u = navigator.userAgent, app = navigator.appVersion
	var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios  
	$(document).ready(function(){
		$("input").blur(function(){
			if (isIOS) {
				blurAdjust()
				// alert("1231321233")
			}
		});
	});
	//          
	function blurAdjust(e){
		setTimeout(()=>{
			// alert("1231321233")
			if(document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA'){
				return
			}
			let result = 'pc';
			if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //  iPhone|iPad|iPod|iOS
					result = 'ios'
			}else if(/(Android)/i.test(navigator.userAgent)) {  //  Android
					result = 'android'
			}
			
			if( result = 'ios' ){
				document.activeElement.scrollIntoViewIfNeeded(true);
			}
		},100)
	}

参考:https://blog.csdn.net/Mr_linjw/articale/detail/85050920