之前使用placeholder时,view大部分是固定位置,没有异常,但在订单页面中,“买家留言”会根据商品的多少上下移动位置,而底部又不是tarbar,上下滚动时会出现placeholder字符高于其他view的情况,如下图(这可以算是小程序的一个bug,官方没有简单的处理方法,z-index、cover-view统统无效)。在网上搜罗一圈,唯一详解的帖子居然还收费,十分气人,于是决定自己解决。
解决思路
其实没什么好方法,唯一的方法就是让整个input不显示,而我的页面是底部固定,因此至需要知道距离bottom的位置,以及监听滚动,进行true/false的调整即可。
代码如下
messageDisabled: function () {
let that = this;
//获取bottom位置
let query = wx.createSelectorQuery();
query.select('#message').boundingClientRect()
query.exec(function (res) {
//在自制底部高度之上才设为true,其他均为false
if (res[0].bottom < 655) {
that.setData({
isDisabled: true
})
} else {
that.setData({
isDisabled: false
})
}
})
},
wxml中只需要在input中加入wx:if="{{isDisabled}}"即可
注意
需要将这段代码在onLoad以及onPageScroll中执行,以确保静态、滚动时均符合显示要求
最后吐槽一句,方法很简单,但是这种问题实在有点坑人,有人居然还拿这个要求付费看帖,更让人气愤