uni-app app双端,如何实现长按选中文字出现复制粘贴按钮

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

uni-app app双端,如何实现长按选中文字出现复制粘贴按钮

18 回复

有个css属性是控制这个的


css的user-select: text,和text组件的selectable的属性。。 都不足以完成我的需求,如今就是要自己做一个。。 请问有现成的插件吗?或是思路?

回复 [已删除]: 不能满足需要,那我明白了,你是要改菜单,那你的工作就多了,需要自己监听触摸世界实现。

text组件的selectable属性就是这个效果,详情:https://uniapp.dcloud.io/component/text

css的user-select: text,和text组件的selectable的属性。。 都不足以完成我的需求,如今就是要自己做一个。。 请问有现成的插件吗?或是思路?

nvue页面内的text无法实现长按自由选择文字复制的功能么?

css的user-select: text,和text组件的selectable的属性。。 都不足以完成我的需求,如今就是要自己做一个。。 请问有现成的插件吗?或是思路?

请问解决了吗,我现在也有一个类似的需求,在网上找了一下,没有比较好的解决方法,大部分都是针对于源生的,并没有类似uniapp或者是vue的。

没有,只能自己去写了

老哥,我也是遇到这个问题,重写吧有个问题就是选中自定义文字,没有思路呀

选中文字的计算很复杂,用touchstart,touchmove,touchend方法去写吧

朋友,这个功能实现了吗?

朋友 你是怎么实现这个功能的?

我们的IM源码里面有这个实现,可以自己取看下 智密科技承接安卓/IOS双端插件开发、安卓/IOS App外包开发、项目整体外包、各类硬件产品开发
我们的优势: 1、全职UI、前端、安卓、IOS、后端、硬件工程师,每个岗位都是专职开发更专业,选择智密您就拥有了一个完整的技术支持团队; 2、定制的产品无论是插件、APP、整套系统,一年内免费Bug修复; 3、定制的APP和整体项目软件著作权归客户所有,并协助软件著作权申请; 4、软件开发源头工厂,定价合理,与开发人员直接沟通,避免需求理解问题,提高开发效率; 5、软件均为自主开发,不基于网上代码进行二次开发,保障系统安全性; 6、软件源码自己开发,出现BUG能快速修复,新需求能快速实现; 7、签订开发合同,通过条款约定双方权利义务,服务和售后有保障; 8、我们的插件尽可能做到让用户UI自定义,用户改变UI之后无需联系我们修改插件,只要前端调整UI即可。
我们唯一的劣势:价格可能会比别人高 我们不提供廉价的插件和服务,服务和收费是成正比的。 我们的插件定价基本都在千元以上,插件使用成本=插件购买费用+插件集成成本+插件填坑成本+后续更新成本 在没有好的技术支持前提下,后面三项成本将远远大于插件购买费用,选择智密科技,实现双赢
经过几年积累,已拥有大量双端插件,常见功能的插件几乎都能直接试用,欢迎各位进群了解
插件沟通交流群:755910061(欢迎进群了解我们的技术支持方式及我们的技术能力) 商务QQ:57570616(这是传说中的搅屎棍,光动嘴皮子不干活的,进群最实在) 商务微信:ZhimiTec(同上…)

插件链接共享一下啊~

回复 l***@devdexterity.com: Q群里面有

公司承接项目外包开发、双端(Android,iOS)原生插件开发。
为什么选择我们: 1、1000 项目开发积累,数百种商业模式开发经验,更懂您的需求,沟通无障碍。 2、一年免费技术保障,系统故障或被攻击,2小时快速响应提供解决方案落地。 3、软件开发源码定制工厂,去中间商降低成本,提高软件开发需求沟通效率。 4、纯原生开发,拒绝模板和封装系统,随时更新迭代,增加功能,无需重做系统。 5、APP定制包办软件著作权申请,30天内保证拿到软著证书,知识产权受保护。 6、中软云科技导入严谨的项目管理系统,确保项目准时交付,快速抢占市场商机。 7、软件开发费、维护费、第三方各种费用公开透明,不花冤枉钱,不玩套路。
已有大量双端插件、App、小程序、公众号、PC、移动端、游戏等案例。
行业开发经验:银行、医疗、直播、电商、教育、旅游、餐饮、分销、微商、物联网、零售等
商务QQ:1559653449 商务微信:fan-rising
7x24小时在线,欢迎咨询了解

在uni-app中实现长按选中文字出现复制粘贴按钮,可以利用uni-app自带的富文本组件rich-text和一些自定义样式及事件处理来完成。以下是一个简化的代码示例,展示了如何在H5和App端实现这个功能。

步骤

  1. 使用rich-text组件rich-text组件用于显示富文本内容,支持HTML标签。

  2. 自定义长按事件: 使用touchstarttouchmovetouchend事件来判断长按行为。

  3. 显示复制粘贴按钮: 在检测到长按后,显示自定义的复制粘贴按钮。

  4. 实现复制粘贴功能: 使用浏览器的execCommand方法(注意:此方法在部分现代浏览器中已被废弃,但在uni-app的App端和部分H5环境中仍然有效)。

代码示例

<template>
  <view class="container">
    <rich-text nodes="{{htmlNodes}}" @touchstart="onTouchStart" @touchmove="onTouchMove" @touchend="onTouchEnd"></rich-text>
    <view v-if="isLongPress" class="copy-paste-buttons">
      <button @click="copyText">复制</button>
      <button @click="pasteText">粘贴</button>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      htmlNodes: [{ name: 'p', children: [{ type: 'text', text: '这是一段可以长按复制的文字' }] }],
      isLongPress: false,
      longPressTimer: null,
      longPressThreshold: 500, // 长按时间阈值,单位ms
    };
  },
  methods: {
    onTouchStart() {
      this.longPressTimer = setTimeout(() => {
        this.isLongPress = true;
      }, this.longPressThreshold);
    },
    onTouchMove() {
      clearTimeout(this.longPressTimer);
    },
    onTouchEnd() {
      clearTimeout(this.longPressTimer);
      if (this.isLongPress) {
        // 这里可以添加获取选中文本的逻辑,但uni-app的rich-text组件不直接支持
        // 可以考虑使用web-view组件加载HTML页面并处理
        this.isLongPress = false;
      }
    },
    copyText() {
      // 获取选中的文本(这部分逻辑需要自行实现,因为uni-app的rich-text不直接支持)
      const selectedText = '选中的文本'; // 示例
      if (selectedText) {
        document.execCommand('copy');
        uni.showToast({ title: '复制成功' });
      }
    },
    pasteText() {
      const pastedText = document.execCommand('paste');
      uni.showToast({ title: '粘贴内容:' + pastedText });
    }
  }
};
</script>

<style>
.container {
  position: relative;
}
.copy-paste-buttons {
  position: absolute;
  top: 0;
  right: 0;
  background: white;
  border: 1px solid #ccc;
  padding: 5px;
}
button {
  display: block;
  margin-bottom: 5px;
}
</style>

注意:上述示例中,复制粘贴的具体文本获取逻辑需要自行实现,因为rich-text组件不直接支持获取选中的文本。在实际应用中,可以考虑使用web-view组件加载一个包含所需功能的HTML页面,或者寻找第三方插件来实现更高级的文本选择和处理功能。

回到顶部