IOS移动端页面操作过程中发生位移后焦点错位的问题修正

问题描述

之前开发移动端产品时发现过一个很奇怪的问题,移动端的页面在安卓客户端上操作一切正常,而在IOS客户端,如果页面发生了位移(比如召唤出输入法把页面顶上去了一部分),那么在后面出现有弹框(例如提示框,需要点“确认”按钮)的时候,按钮的焦点会发生位移(原按钮位置点击无效,必须得往上或者往下一段距离才能点得到)。此项目使用的是客户端内嵌页面,页面开发使用的是vue。

问题解决

针对页面焦点的位移的问题,最简单的办法就是在操作完成后重置页面的焦点参数。在类似需要召唤出能使页面发生位移的部件时(例如输入法),增加一个失去焦点事件(@blur),然后在方法中重置页面的位置参数。
例:

<input v-model="Name" placeholder="请输入姓名"  @blur="resetWindowScroll "/>

methods部分:

resetWindowScroll() {
	// 判断是否为IOS
	var ua = navigator.userAgent
	if (ua.toLowerCase().indexOf('applewebkit') !== -1) {
		// 重置页面位置参数
  	 	window.scroll(0, 0)
	}
}

效果就是当你输入完成后,页面会自动重置到最顶端。
此方法有一个缺点,假如你页面已经拉到很下面了,输入完后页面还是会被重置到最顶端,但是在页面不长的时候此方法还是基本适用的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值