uni-app 在ios15.4.1版本里省市区选择功能出现Bug,第三级区内容显示不全,android和其它ios版本显示完整

uni-app 在ios15.4.1版本里省市区选择功能出现Bug,第三级区内容显示不全,android和其它ios版本显示完整

操作步骤:

  • APP注册/登录->商城->地址管理->新建收货地址->城市/区域

预期结果:

  • 在ios15.4.1版本里面,省市区选择,第三级区内容显示全

实际结果:

  • 在ios15.4.1版本里面,省市区选择,第三级区内容显示全

bug描述:

  • 我直接把 git 上面的 mui-master/examples/hello-mui/examples/picker.html 测试 ,在ios15.4.1版本里面,也是会出现这个问题,第三级区内容显示不全,android和其它ios是显示完整的

58e14c7d584fcc6a9335cde04b3a986e.zip


更多关于uni-app 在ios15.4.1版本里省市区选择功能出现Bug,第三级区内容显示不全,android和其它ios版本显示完整的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 在ios15.4.1版本里省市区选择功能出现Bug,第三级区内容显示不全,android和其它ios版本显示完整的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中遇到 iOS 15.4.1 版本下省市区选择器(Picker)第三级区内容显示不全的问题,可能是由于 iOS 系统在该版本下的特定兼容性问题导致的。以下是一些可能的解决方案和排查步骤:


1. 检查 Picker 组件的高度和样式

  • 确保 Picker 组件的高度设置合理,避免内容被截断。
  • 检查是否有自定义样式(如 heightoverflow 等)导致内容显示不全。
<picker mode="multiSelector" :range="range" :value="value" [@change](/user/change)="handleChange">
  <view class="picker">选择省市区</view>
</picker>

<style>
.picker {
  height: 200px; /* 确保高度足够 */
  overflow: visible; /* 避免内容被裁剪 */
}
</style>

2. 更新 uni-app 版本

  • 确保使用的是最新版本的 uni-app,因为官方可能已经修复了类似问题。

  • 运行以下命令更新 uni-app

    npm update @dcloudio/uni-app
    

3. 使用原生 Picker 组件

  • 如果 uni-app 的 Picker 组件在特定 iOS 版本下存在问题,可以尝试使用原生 iOS 的 Picker 组件。

  • 通过条件编译,针对 iOS 使用原生组件:

    <template>
      <view>
        <!-- 通用 Picker -->
        <picker v-if="!isIOS" mode="multiSelector" :range="range" :value="value" [@change](/user/change)="handleChange">
          <view class="picker">选择省市区</view>
        </picker>
    
        <!-- iOS 原生 Picker -->
        <view v-if="isIOS">
          <picker-view :value="value" [@change](/user/change)="handleChange">
            <picker-view-column>
              <view v-for="(item, index) in range[0]" :key="index">{{ item }}</view>
            </picker-view-column>
            <picker-view-column>
              <view v-for="(item, index) in range[1]" :key="index">{{ item }}</view>
            </picker-view-column>
            <picker-view-column>
              <view v-for="(item, index) in range[2]" :key="index">{{ item }}</view>
            </picker-view-column>
          </picker-view>
        </view>
      </view>
    </template>
    
    <script>
    export default {
      data() {
        return {
          range: [], // 省市区数据
          value: [0, 0, 0], // 当前选中项
          isIOS: uni.getSystemInfoSync().platform === 'ios'
        };
      },
      methods: {
        handleChange(e) {
          this.value = e.detail.value;
        }
      }
    };
    </script>
    

4. 检查数据源

  • 确保省市区数据源完整,没有缺失第三级数据。
  • 如果数据源是通过接口获取的,检查接口返回的数据是否完整。

5. 使用第三方组件

  • 如果问题无法解决,可以考虑使用第三方省市区选择器组件,例如:
  • 这些组件通常经过更广泛的测试,兼容性更好。

6. 提交 Issue 给 uni-app 官方

  • 如果以上方法都无法解决问题,建议将问题反馈给 uni-app 官方团队。
  • uni-app GitHub Issues 中提交问题,提供详细的复现步骤和设备信息。

7. 临时解决方案

  • 如果问题仅出现在 iOS 15.4.1 版本,可以通过条件编译或版本判断,针对该版本使用降级方案(如减少 Picker 层级或使用其他交互方式)。
const systemInfo = uni.getSystemInfoSync();
if (systemInfo.platform === 'ios' && systemInfo.system === '15.4.1') {
  // 针对 iOS 15.4.1 的特殊处理
}
回到顶部