由于工作需要,首次进行微信小程序开发,从基础环境搭建到小程序发布,体验到小程序便捷的同时,也踩了不少坑,在此记录下。
这个问题相信很多小程序开发者都会碰到。
现象描述:打开一个弹窗,滑动弹窗中内容,会影响到下层UI,导致下层UI跟随滑动。
解决方式:
在标签中添加@touchmove.stop.prevent
,如下示例:
...
建议使用ScrollView实现
若设置了自定义导航栏,在PC端展示会出现两个导航栏,如下:
不是所有的标签、属性都支持,支持属性参考:支持属性
在开发模式
可以通过配置暂时性的忽略以方便开发,但是在小程序发布
时就必须要采用https了,并且还要在微信小程序开发者后台【项目配置中】提前配置合法的request域名。
开发模式配置方式:
微信开发者工具 → 右侧工程【详情】→ 勾选【不校验合法域名…】,如下图:
仅支持单文件上传,若有多文件上传的需要自己封装函数,多次调用uni.uploadFile();
注意:上传前先在微信小程序后台配置下上传的合法域名,否则是上传不了的。笔者在这里犯了次错误。
canvas在移动端运行为作为原生组件,其层级高于小程序组件,因此要保证弹窗的层级高于canvas,必须使用同为原生组件的cover-view
组件.
cover-view的使用,类似小程序组件View
的使用。
值得注意的是
:z-index属性对原生组件在真机上不生效,因此显示在Canvas上的要放在布局时要放在canvas后面;
解决方案:
方式一:保存屏幕常亮
uni.setKeepScreenOn({keepScreenOn:show
})
方式二:
在uniapp工程的app.vue中,监听onShow(显示)和onHide(隐藏)方法
在微信小程序app.js中监听onAppShow()和onAppHide()
在笔者的工程中是采用两者结合
的方式,如下:
//增加保持小程序屏幕常亮
uni.setKeepScreenOn({keepScreenOn:show
})
if(osName === 'ios'){if(show){//展示if(hideDevice){let {deviceId,mac,localName,name} = hideDevicelet dev = {deviceId,mac,localName,name}console.log(`进入前台恢复蓝牙连接:${deviceId}`)//连接蓝牙设备...}hideDevice = undefined}else {//隐藏let device = this.globalData.deviceconsole.log("连接的设备==>",device)if(device){console.log(`进入后台断开蓝牙连接:${device.deviceId}`)hideDevice = device//断开连接的设备uni.closeBLEConnection({deviceId:device.deviceId})}}
}