组件:vant的field组件
使用场景:根据数据渲染输入框,单选框,多选框等控件,为保持样式统一,都使用用field展示,选择框设置readonly属性,点击时侯触发pop弹出
出现问题:在点击了一个输入框之后,后续点击readonly的field框时,ios下不能正常失焦
兼容处理:ios端,在点击输入框的时侯,先把当前行的focus改为true,其他行改为false,再临时把当前行的readonly为false,50ms后再改回
目前问题:之前这种写法时可以的,但是两个月前突然失效了,经过测试,发现ios端可以正常失焦了,兼容处理后反而有其他问题,就注释掉了相关代码,但是前几天ios端又不能正常失焦了,兼容代码如下
if (this.data.platform !== 'ios') return
let obj = {}
for (let i = 0; i < this.data.pageData.body[templateIndex].configData.list.length; i++) {
const key = `pageData.body[${templateIndex}].configData.list[${i}].configData.focus`
obj[key] = index === i
}
const key = `pageData.body[${templateIndex}].configData.list[${index}].configData.readOnly`
this.setData(data.readOnly ? { [key]: false } : {}, () => {
this.setData(obj, () => {
data.readOnly && setTimeout(() => {
this.setData({
[key]: true
})
}, 50);
})
})
你好,请移步vant社区讨论