uni-app uni.showActionSheet第100条在安卓无法选择

发布于 1周前 作者 yibo5220 来自 Uni-App

uni-app uni.showActionSheet第100条在安卓无法选择

开发环境 版本号 项目创建方式
Windows Win11 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:3.96

手机系统:Android

手机系统版本号:Android 13

手机厂商:小米

手机机型:小米13U

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

<template>  
  <view @tap="actionSheetTap">123</view>  
</template>  

<script>  
export default {  
  methods: {  
    actionSheetTap() {  
      uni.showActionSheet({  
        title: "",  
        itemList: [  
          "1",  
          "2",  
          "3",  
          "4",  
          "5",  
          "6",  
          "7",  
          "8",  
          "9",  
          "10",  
          "11",  
          "12",  
          "13",  
          "14",  
          "15",  
          "16",  
          "17",  
          "18",  
          "19",  
          "20",  
          "21",  
          "22",  
          "23",  
          "24",  
          "25",  
          "26",  
          "27",  
          "28",  
          "29",  
          "30",  
          "31",  
          "32",  
          "33",  
          "34",  
          "35",  
          "36",  
          "37",  
          "38",  
          "39",  
          "40",  
          "41",  
          "42",  
          "43",  
          "44",  
          "45",  
          "46",  
          "47",  
          "48",  
          "49",  
          "50",  
          "51",  
          "52",  
          "53",  
          "54",  
          "55",  
          "56",  
          "57",  
          "58",  
          "59",  
          "60",  
          "61",  
          "62",  
          "63",  
          "64",  
          "65",  
          "66",  
          "67",  
          "68",  
          "69",  
          "70",  
          "71",  
          "72",  
          "73",  
          "74",  
          "75",  
          "76",  
          "77",  
          "78",  
          "79",  
          "80",  
          "81",  
          "82",  
          "83",  
          "84",  
          "85",  
          "86",  
          "87",  
          "88",  
          "89",  
          "90",  
          "91",  
          "92",  
          "93",  
          "94",  
          "95",  
          "96",  
          "97",  
          "98",  
          "99",  
          "100",  
          "101",  
          "102",  
        ],  
        success: (e) => {  
          console.log("success");  
        },  
        fail: (e) => {  
          console.log("fail");  
        },  
        complete: (e) => {  
          console.log("complete");  
        },  
      });  
    },  
  },  
};  
</script>  

操作步骤:

  • 点击文本“123”,点击数字“100”

预期结果:

  • 打印“success”、“complete”或打印“fail”、“complete”

实际结果:

  • 什么都没有打印

bug描述:

uni.showActionSheet第100条在安卓无法选择,IOS第100条可以选择 点击第100条success、fail、complete方法均不执行


4 回复

确实有这个问题 你真牛啊 这种bug都能让你找出来 这么多的选择 用picker不行吗?


actionsheet最大6条

是有这问题。app可以显示多个,小程序最大是6个

uni-app 中使用 uni.showActionSheet 时,如果第100条在安卓设备上无法选择,这可能是由于安卓系统对 ActionSheet 的显示项数量有限制。通常情况下,安卓系统对 ActionSheet 的显示项数量有一个上限,超过这个上限后,后面的项可能无法显示或选择。

解决方案

  1. 分页显示

    • ActionSheet 的选项分成多个页面显示。例如,每页显示20个选项,用户可以通过滑动或点击“下一页”按钮来查看更多选项。
  2. 使用自定义组件

    • 使用 uni-app 的自定义组件来实现一个类似 ActionSheet 的功能,这样可以完全控制显示的内容和交互逻辑,不受系统限制。
  3. 使用 Picker 组件

    • 如果选项数量非常多,可以考虑使用 Picker 组件,它更适合处理大量选项的情况。
  4. 优化选项数量

    • 如果可能,尽量减少选项的数量,或者将选项进行分组,减少一次性显示的选项数量。

示例代码

以下是一个简单的分页显示 ActionSheet 的示例:

let items = []; // 假设这是你的100个选项
let pageSize = 20; // 每页显示20个选项
let currentPage = 0;

function showActionSheetPage(page) {
    let start = page * pageSize;
    let end = start + pageSize;
    let pageItems = items.slice(start, end);

    uni.showActionSheet({
        itemList: pageItems,
        success: (res) => {
            let selectedIndex = res.tapIndex;
            let selectedItem = pageItems[selectedIndex];
            console.log('Selected:', selectedItem);
        },
        fail: (res) => {
            console.log('ActionSheet failed:', res);
        }
    });
}

// 显示第一页
showActionSheetPage(currentPage);

// 下一页按钮点击事件
function nextPage() {
    currentPage++;
    if (currentPage * pageSize < items.length) {
        showActionSheetPage(currentPage);
    } else {
        uni.showToast({
            title: '没有更多选项了',
            icon: 'none'
        });
    }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!