uniapp ios端使用fixed定位导致输入时页面滚动简单解决方法

当移动端使用fixed定位自定义nav栏时,安卓端正常固定在可视窗顶部,但是ios端当有input输入,弹出软键盘时,会将nav顶出可视区,因为在ios上,不是相对于浏览器窗口定位的,而是相对于最近的可滚动区,所以就会导致软键盘弹出时,跟随内容一起滚出去了

解决一

js 复制代码
//pages.json 配置style 
	"style": {
		//手机软键盘升起不让其将页面头部上推
		"app-plus": {
			"softinputMode": "adjustResize"
		}
	},

当我们配置完后会发现,ios端解决了顶出的问题;很棒!但接着新问题又出现了,软键盘弹出时滚动页面,自定义nav栏又跟着跑了(¬︿̫̿¬☆),怎么办呢,我们可以监听页面滚动事件,当页面滚动时就收起软键盘,这样就不会跟着跑啦;

html 复制代码
<input class="input"  v-model="oneTopic.value" :adjust-position="false" @input="onInputValue()" />
js 复制代码
//监听页面滚动事件
	export default {
		data() {
			isInput: false
		},
		onPageScroll(res) {
			console.log("页面滚动了", res)
			if (!this.isInput) {
				uni.hideKeyboard() //隐藏软键盘
			}
		},
		methods: {
			onInputValue() {
				this.isInput = true
			}
		}
	}

你们一定会问,为啥多了个isInput的判断,因为实测发现,当input框被软键盘挡住时,输入会触发页面滚动事件,真是离谱;为了解决这个问题,我们可以监听页面input的输入事件,当输入时,赋值给isInput,这样就能判断是真实页面滚动,还是输入事件;这样一个不完美的解决方案就完成了;

(ps: 截取的关键代码,没测试,有问题大概就是这个解决思路)

相关推荐
梦曦i2 分钟前
@meng-xi/uni-router 未来展望:夯实基础、深化体验、探索前沿
前端·uni-app
麒麟马3 小时前
Swift 扩展归纳---Array (一)
ios·swift
2501_915106325 小时前
Swift 4开发环境设置教程:xCode安装与Playground入门
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
欢迎来到祖安!5 小时前
企业微信 iPad 协议私有化方案:毫秒级事件推送与高并发承载实践
ios·企业微信·ipad
2501_916007476 小时前
使用Apple Dashboards显示和自定iOS应用性能指标与数据可视化指南
android·ios·小程序·https·uni-app·iphone·webview
用户38034165882977 小时前
YUV→RGB 的颜色范围与矩阵:画面发灰的真凶
ios
深念Y7 小时前
黑苹果P400-直通显示折腾全记录-20260907
macos·ios·系统·黑苹果·苹果·英伟达·p400
2501_915921437 小时前
抓包工具对比:Charles、TraceEagle、Wireshark、Fiddler 与 Proxyman
网络协议·计算机网络·网络安全·ios·adb·https·udp
爱折腾的编程老炮8 小时前
潮玩小程序订单模型-一张表装下所有玩法
spring boot·小程序·uni-app
两个人的幸福online8 小时前
UniApp 对接 IM 即时通讯全攻略(下篇)
uni-app