当前位置:首页 > uni-app

uniapp 长按菜单

2026-03-05 00:06:12uni-app

长按菜单实现方法

在UniApp中实现长按菜单功能,可以通过以下几种方式完成:

使用@longpress事件监听 通过绑定@longpress事件来触发菜单显示,适合基础需求:

uniapp 长按菜单

<template>
  <view @longpress="showMenu">长按显示菜单</view>
  <view v-if="menuVisible" class="menu-popup">
    <text @click="handleMenu(1)">选项1</text>
    <text @click="handleMenu(2)">选项2</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      menuVisible: false
    }
  },
  methods: {
    showMenu() {
      this.menuVisible = true
    },
    handleMenu(index) {
      console.log('选择选项', index)
      this.menuVisible = false
    }
  }
}
</script>

使用uni.showActionSheet API 调用官方提供的底部操作菜单接口,样式统一且支持多端:

methods: {
  showActionMenu() {
    uni.showActionSheet({
      itemList: ['选项A', '选项B', '选项C'],
      success: (res) => {
        console.log('选中项索引:', res.tapIndex)
      }
    })
  }
}

自定义弹出菜单组件 创建可复用的自定义组件实现更灵活的菜单样式:

uniapp 长按菜单

<!-- components/long-press-menu.vue -->
<template>
  <view>
    <slot @longpress="toggleMenu"></slot>
    <view v-if="visible" class="custom-menu">
      <view v-for="(item,index) in items" :key="index" @click="selectItem(index)">
        {{ item.text }}
      </view>
    </view>
  </view>
</template>

<script>
export default {
  props: {
    items: Array
  },
  data() {
    return {
      visible: false
    }
  },
  methods: {
    toggleMenu() {
      this.visible = !this.visible
    },
    selectItem(index) {
      this.$emit('select', index)
      this.visible = false
    }
  }
}
</script>

注意事项

  • 在H5端自定义菜单时需注意z-index层级问题
  • 小程序平台部分API存在样式限制,需测试多端兼容性
  • 长按事件在iOS设备上可能有300ms延迟,可通过CSS解决:
    .menu-target {
    -webkit-touch-callout: none;
    user-select: none;
    }

扩展功能

实现带图标的菜单项:

uni.showActionSheet({
  itemList: ['★ 收藏', '⎘ 分享', '✎ 编辑'],
  success(e) {
    console.log(e.tapIndex)
  }
})

添加菜单取消回调:

uni.showActionSheet({
  itemList: ['选项1', '选项2'],
  fail(err) {
    console.log('取消选择', err)
  }
})

标签: 菜单uniapp
分享给朋友:

相关文章

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

uniapp树形选择

uniapp树形选择

uniapp树形选择实现方法 使用uni-data-checkbox组件 uniapp内置的uni-data-checkbox组件支持树形结构选择,适用于多级分类场景。配置时需要将数据格式化为树形结构…

uniapp切片

uniapp切片

uniapp 切片实现方法 在 uniapp 中实现切片功能通常指的是对图片或数据进行分割处理。以下是几种常见的切片实现方式: 图片切片展示 通过 CSS 和 JavaScript 实现图片的网格化…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp 编辑

uniapp 编辑

uniapp 编辑功能实现方法 在uniapp中实现编辑功能通常涉及表单处理、数据绑定和状态管理。以下为常见实现方式: 表单数据双向绑定 使用v-model指令实现表单元素与数据的双向绑定: &l…

混合uniapp

混合uniapp

混合 UniApp 开发模式 混合 UniApp 开发通常指将 UniApp 与其他原生技术(如原生 iOS/Android 或 Flutter)结合使用,以兼顾跨平台效率和原生性能。以下是常见的混合…