富文本编辑器 iOS

https://gitee.com/klkxxy/WGEditor-mobile#wgeditor-mobile

采用iOS系统浏览器做的一款富文本编辑器工具。 原理就是使用WKWebView加载一个本地的一个html文件,从而达到编辑器功能的效果! 由于浏览器的一些特性等,富文本编辑器手机端很难做的完美,慢慢完善,欢迎提出好的建议。

一、Installation 安装

#import "RichEditor.h"

二、Example 例子

  • 常用函数
  • (void)titleTextHandleCallback:(void (^)(id _Nullable obj, NSError * _Nullable error))callback;
  • (void)setupTitle:(NSString *)title;
  • (void)contentTextHandleCallback:(void (^)(id _Nullable obj, NSError * _Nullable error))callback;
  • (void)contentHtmlTextHandleCallback:(void (^)(id _Nullable obj, NSError * _Nullable error))callback;
  • (void)setupContent:(NSString *)content;
  • (void)updatePlaceHolderStatu;
  • (void)placeHolderWithHidden:(BOOL)isHidden;

//撤销

  • (void)undo;
  • (void)redo; //加粗
  • (void)bold; //下划线
  • (void)underline; //斜体
  • (void)italic; //左对齐
  • (void)justifyLeft; //居中对齐
  • (void)justifyCenter; .....

三、上传图片

实现思路:图片上传七牛服务器举例

https://github.com/study123456/WGEditor-mobile/blob/master/design_up.png

//插入本地图片

  • (void)insetImage:(NSData *)imageData key:(NSString *)key; //上传中

  • (void)insetImageKey:(NSString *)imageKey progress:(CGFloat)progress; //图片上传成功

  • (void)insetSuccessImageKey:(NSString *)imageKey imgUrl:(NSString *)imgUrl; //删除图片

  • (void)deleteImageKey:(NSString *)key; // 上传失败

  • (void)uploadErrorKey:(NSString *)key;

  • (void)removeBtnErrorKey:(NSString *)key isHide:(BOOL)isHide;

    实现效果

四、More 更多

如果你发现了bug,请先在Issues中搜索答案。 没有请提一个issues。 欢迎给我提pull requests。 请尽可能详细地描述系统版本、手机型号、库的版本、崩溃日志和复现步骤,请先更新到最新版再测试一下,如果新版还存在再提~如果已有开启的类似issue,请直接在该issue下评论说出你的问题

五、Other 其它

近期更新 1、由于iOSUIWebView被弃用,修改UIWebview替换成WKWebView,性能更优 2、工具条可扩展 3、易集成 封装基类

常见问题

音视频排期中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/591006.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【开源物联网平台】window环境下搭建调试监控设备环境

🌈 个人主页:帐篷Li 🔥 系列专栏:FastBee物联网开源项目 💪🏻 专注于简单,易用,可拓展,低成本商业化的AIOT物联网解决方案 目录 一、使用docker脚本部署zlmediakit 1.1 …

WebDriver使用带用户名密码验证的IP代理解决方案

背景,使用python3 selenium 先定义一个方法,这里主要用到了chrome插件的功能,利用这个插件来放进代理内容。 def create_proxy_auth_extension(proxy_host, proxy_port,proxy_username, proxy_password, schemehttp):manifest_json "…

【HAL库 STM32】输入捕获并实现超声波测距

文章目录 HC-SR04 超声波模块简介HC-SR04 工作原理如何使用HC-SR04模块程序效果 一、工程配置代码如果您发现文章有错误请与我留言,感谢 HC-SR04 超声波模块简介 HC-SR04 工作原理 模块有2个超声波换能器(如图所示),一个发出声波…

Spark Stream

一、Spark Streaming是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、wind…

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言:Java 使用框架: SSM(Spring SpringMVC Myba…

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列(二)【创建核心类、封装数据库操作】

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列 四. 项⽬创建五. 创建核⼼类 ★创建 Exchange(名字、类型、持久化、自动删除、参数)创建 MSGQueue(名字、持久化、独占标识)创建 Binding(交换机名字、队列名字…

pymeshlab加载物体、创建UV映射(基于平面投影)、创建并保存UV纹理和物体模型

一、关于环境 请参考:pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。本文所给出的例子是https://download.csdn.net/download/weixin_42605076/89233917中的…

MySQL45讲(一)(40)

回顾binlog_formatstatement STATEMENT 记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等 在RR隔离级别下,binlog_formatstatement 如果执行insert select from 这条语句是对于一张…

uniapp 自定义相机插件(组件版、缩放、裁剪)组件 Ba-CameraView

自定义相机插件(组件版、缩放、裁剪) Ba-CameraView 简介(下载地址) Ba-CameraView 是一款自定义相机拍照组件,支持任意界面,支持裁剪 支持任意自定义界面支持手势缩放支持裁剪(手势拖动、比…

35.Docker-数据卷,目录挂载

注意:在容器内修改文件是不推荐的。 1.修改不方便,比如vi命令都无法使用。 2.容器内修改,没有日志记录的。 问题:那应该如何修改容器中的文件呢? 数据卷 volume是一个虚拟目录,指向宿主机文件系统中的…

Python量化炒股的获取数据函数—get_index_stocks()

Python量化炒股的获取数据函数—get_index_stocks() 利用get_industry_stocks()函数可以获取在给定日期一个行业的所有股票代码列表,其语法格式如下: get_industry_stocks(industry_code, dateNone)各项参数的意义 参数date和返回值,都与g…

【海博】雅思该怎么练?

文章目录 前言 备考计划 模拟考试 参考资料 前言 见《【海博】浅析海博深造》 见《【海博】雅思和托福该考哪个?》 见《【海博】雅思该怎么考?》 见《【海博】雅思考什么?》 备考计划 第一周确定你的目标考试分数。 做一套雅思模拟试题&…

头歌:RDD的创建 - Python

第1关:集合并行化创建RDD 任务描述 本关任务:编写一个集合并行化创建RDD的程序。 相关知识 为了完成本关任务,你需要掌握:1.如何使用集合并行化创建一个Spark RDD 。 什么是 RDD RDD(Resilient Distributed Dataset&…

MLP手写数字识别(1)-MNIST数据集下载与可视化(tensorflow)

1.下载与查看MNIST数据集 from keras.datasets import mnist(x_train_image,y_train_label),(x_test_image,y_test_label) mnist.load_data() print("train images:",x_train_image.shape) print("test images:",x_test_image.shape) print("train …

【how2j Vue部分】两种在Vue的Ajax框架——fetch axios

fetch.js 和 axios.js 都是 Vue 中比较常见的两种ajax框架 1. fetch.js 一般说来 Vue 不会直接使用原生的 Ajax 而是使用 ajax 框架。 而 fetch.js 就是眼下比较流行的一种 ajax 框架 1. 准备 json数据:var url "https://gitee.com/api/v5/users/liyangyf&…

深入 Django 模型层:数据库设计与 ORM 实践指南

title: 深入 Django 模型层:数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories: 后端开发 tags: Django ORM模型设计数据库关系性能优化数据安全查询操作模型继承 第一章:引言 Django是一个基于Python的开源…

Docker - 修改服务的端口

1. 测试 新建一个httpd服务 docker run -itd -p 1314:80 --name test -h test httpd 2. 先停止容器和 docke r服务 docker stop test #停止容器3. 修改配置 cd /var/lib/docker/containers ls 找到需要修改的 cd 1fc55f0d24014217cff68c9a417ca46cf50312caa5c9e6bb24085126…

【51蛋骗鸡595点阵88数码管流水灯综合应用】2021-12-30

缘由51单片机变量进阶与点阵LED-嵌入式-CSDN问答 大佬们 求解单片机点亮点阵程序 被困3天了一直想不明白 - 24小时必答区 #include<reg52.h>//头文件sbit shcpP1^2;//数据输入时钟线 595的11脚 sbit stcpP1^1;//输出存储器锁存时钟线 595的12脚 sbit dsP1^0;//数据线 5…

在2-3-4树上实现连接与分裂操作的算法与实现

在2-3-4树上实现连接与分裂操作的算法与实现 引言1. 维护2-3-4树结点的高度属性伪代码示例 2. 实现连接操作伪代码示例 3. 证明简单路径p的划分性质4. 实现分裂操作伪代码示例 C代码示例结论 引言 2-3-4树是一种平衡搜索树&#xff0c;它保证了树的高度被有效控制&#xff0c;…

242 基于matlab的3D路径规划

基于matlab的3D路径规划&#xff0c;蚁群算法&#xff08;ACO&#xff09;和天牛须&#xff08;BAS&#xff09;以及两种结合的三种优化方式&#xff0c;对3D路径规划的最短路径进行寻优。程序已调通&#xff0c;可直接运行。 242 3D路径规划 蚁群算法和天牛须 - 小红书 (xiaoh…