小程序ios/安卓移动端兼容问题

本文探讨了如何解决iPhone X及以上型号手机底部出现的安全区域黑条问题,并提到了在iOS真机上日期格式处理的技巧。同时介绍了如何使用env()和constant()函数适配安全区域。

iphoneX 及以上底部存在黑条

方案:


mounted() {
	this.$nextTick(()=>{
	     uni.getSystemInfo({ 
	         success:(res)=> { //成功回调函数
	             if(res.model.indexOf('iPhone X') !== -1 || 
	             res.model.indexOf('iPhone 11') !== -1 || 
	             res.model.indexOf('iPhone 12') !== -1 || 
	             res.model.indexOf('iPhone 13') !== -1){
	                 this.safetyBottom = true
	             }
	         }
	     })
	 })
	},

.safetyBottom{
	padding-bottom: constant(safe-area-inset-bottom); 
	padding-bottom: env(safe-area-inset-bottom);
}


/**
	env() 和 constant()是IOS11新增的css函数,有四个预定义的变量
	safe-area-inset-bottom、safe-area-inset-top、safe-area-inset-left、
	safe-area-inset-right,
	分别是安全区域到各边界的距离,此时我们只需要关心afe-area-inset-bottom
	(横竖屏的情况下是不一样的)。对于不支持这两个属性的情况,浏览器会忽略。
*/

ios 真机 不能解析YYYY-MM-DDDD格式 date.getYear()/ getFullYear()/getMonth(); 返回NaN

方案

	let dateStr = '2022-01-01'; 
	dateStr = dateStr.replace(/\-/g, '/'); // 将'-'符号替换成'/'
	let dataTime = new Date(dateStr).getTime();

键盘弹出导致页面布局错乱

iOS:键盘弹出时会将整个页面顶起,可能导致页面元素错位。

Android:键盘可能遮挡输入框,且不会自动调整页面布局。

方案

  1. 监听键盘高度并动态调整布局:
wx.onKeyboardHeightChange(res => {
  const keyboardHeight = res.height;
  this.setData({ paddingBottom: keyboardHeight + 'px' });
});
  1. 使用 scroll-view 包裹输入区域:
<scroll-view scroll-y style="height: 100vh;">
  <input bindfocus="onInputFocus" />
</scroll-view>
  1. 手动聚焦输入框并滚动到可视区域:
onInputFocus(e) {
  wx.pageScrollTo({
    selector: '#input-id',
    duration: 300
  });
}

ios两个滚动条

方案
使用 scroll-view 的 enhanced 属性

<scroll-view enhanced scroll-y style="height: 100vh;">
  <!-- 内容 -->
</scroll-view>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值