iOS 使用markdown 实现编辑和预览文本
注意要点:
1.在iOS 可以依赖UIWebview 来实现
2.丰富的UI样式依赖 html 的样式, js 调用插入markdown内容呈现出来
3.实现markdown编辑快捷键:参考github 编辑内容的快捷键即可
⚠️ 实现过程中遇到一个问题,在github上 编辑好的文本,客户端在线预览的时候是空白的。。。调试了好久终于找到问题:一样的文本在pc端可能会生成\r,但是在iOS 客户端回车键只会是\n. 所以markdown文本在注入js前执行的过滤方案中我多加了一条过滤\r 即问题解决了
- (NSString *)getMarkdownContentWithMarkdowString:(NSString *)markdown {
markdown = [markdown stringByReplacingOccurrencesOfString:@"\r"withString:@""];//⚠️防止不识别\r
markdown = [markdown stringByReplacingOccurrencesOfString:@"\n"withString:@"\\n"];
markdown = [markdown stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
markdown = [markdown stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];
return markdown;
}
测试复现这种情况 可以使用下面的测试文案:
()driving off the spleen and regulating the circulation.\r\n //无法显示
()driving off the spleen and regulating the circulation.\r //无法显示
()driving off the spleen and regulating the circulation.\n //正常
()driving off the spleen and regulating the circulation. //正常
markdown 编辑效果如下:

markdown 预览效果如下:

参考项目:地址 https://github.com/Li-Qun/EditMarkdownDemo
欢迎给小星星✨✨✨鼓励哦
iOS 使用markdown 实现编辑和预览文本的更多相关文章
- Markdown在线编辑及预览
推荐一款不错的Markdown语法手册,最可贵的是支持在线编辑预览: Cmd Markdown简介 Cmd Markdown语法手册及在线编辑 补充一些使用技巧: MarkDown实现段首缩进:「Ma ...
- 使用Sublime Text 3进行Markdown编辑+实时预览
使用Sublime Text 3进行Markdown编辑+实时预览 安装软件包管理器 打开Sublime Text 3 同时按下 ctrl+` ,窗口底部出现一个小控制台 复制以下代码,粘贴到控制台的 ...
- 使用Sublime Text 3进行Markdown 编辑+实时预览
这种做法可能会对你的磁盘IO造成一小部分性能负担,但负面影响足以忽略. 另外,由于这种频率的读写会被磁盘缓存接管,不必担心磁盘寿命的影响. 对于刚安装好的Sublime Text,我们需要安装一个软件 ...
- Vim安装插件支持 MarkDown 语法、实时预览等
使用 markdown-preview.vim 插件可以实时通过浏览器预览 markdown 文件 使用该插件需要 vim 支持py2/py3 安装 使用 vim-plug: 在 .vimrc 或 i ...
- vscode markdown WYSIWYG 所见即所得编辑和预览
一直使用Typora编写markdown,随着vscode在工作中使用的越来越多,产生了一个想法:能不能在vscode中写markdown,减少软件的成本? 可是vscode官方自带的的markdow ...
- Sublime 配置 Markdown,并实时预览
准备: 找到菜单栏:Preferences → Package Control → Package Control:Install Package 需要安装的插件: [Markdown Editing ...
- 自己动手开发更好用的markdown编辑器-04(实时预览)
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im/2015/04/25/hexomd-04/ 程序打包 文章目录 1. 打开新窗口 ...
- iOS全埋点解决方案-界面预览事件
前言 我们先了解 UIViewController 生命周期相关的内容和 iOS 的"黑魔法" Method Swizzling.然后再了解页面浏览事件($AppViewScr ...
- vue富文本编辑,编辑自动预览,单个图片上传不能预览的问题解决:
//预览<div class="htmlViewBox"> <p v-html="activity_html_defaultMsg" v-sh ...
随机推荐
- python3----练习......
# 上行遍历 soup = BeautifulSoup(demo, 'html.parser') for parent in soup.a.parents: if parent is None: pr ...
- 实际用户ID,有效用户ID,保存的设置用户ID
Unix中常见的几个概念,下面做一个解释. 首先需要明确一点,这几个概念都是和进程相关的. real user ID表示的是实际上进程的执行者是谁,effective user ID主要用于校验该进程 ...
- 应用开发之Linq和EF
本章简言 上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知 ...
- Objective-C内存管理基础
2011-05-11 15:45 朱祁林 http://zhuqil.cnblogs.com 字号:T | T 本文我们将介绍<Objective-C内存管理基础>,在iOS开发中,内存管 ...
- Jquery 中的 event、event.target 和原生JS的 event、event.target 对比
先看下原生的 event,如图: 再看下 Jquery 中的 event,如图: 明显不一样,也符合常理,比较结果: 那么如何把 Jquery 中的 event 转成原生的呢? event.orig ...
- linux shell 脚本使用
定义变量 fileName=text.txt 变量名称fileName,变量名称text.txt 使用变量 $fileName 用美元符号$开头,后面加变量名称,即可使用变量 使用用户输入参数 打印第 ...
- .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
遇到这个恶心的问题纠缠得不要不要的,大家遇到了的话希望不要走弯路,经过这个折腾让我有点怀疑人生了.哈哈哈 解决代码如下: //插入一个新线程用于处理验证码 Thread thd = new Threa ...
- 5501环路运输【(环结构)线性DP】【队列优化】
5501 环路运输 0x50「动态规划」例题 描述 在一条环形公路旁均匀地分布着N座仓库,编号为1~N,编号为 i 的仓库与编号为 j 的仓库之间的距离定义为 dist(i,j)=min(|i-j| ...
- 刚开始学Python,坚持下去
嗯,刚开始学Python没几天,挺好的一门语言,十分简洁,也很好上手. 坚持下去,每天至少看一个小时的Python.
- 微信openid的单脚本获取 将 header 至自身,但是reques参数不同,响应也不同-----“单脚本APP”
w 0-目的是封装成一个类.方法,方便在不同入口下,比如不是在微信公众号内而是在他人分享的url,获取opeid,且便于路由控制,将路由控制交给且仅交给codeigniter; 1-任何一个网站都可以 ...