扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
方案 :html+wkwebview,支持加粗、下划线、斜体、对齐方式、字体更改颜色、插入图片、插入视频、插入链接、清除格式、撤回上一个操作
公司主营业务:做网站、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出秭归免费做网站回馈大家。
核心 :利用html5新特性contenteditable,当div的contenteditable为true时,div进入编辑状态,可以通过执行html5的命令对文本进行操作。命令文档地址:。
具体实现 :
一:文件目录
1.editor.html,该文件实现了编辑器的节点骨架,一个contenteditable为true的div。
2.ZJSTextEditor.js,该文件是编辑器的核心内容,主要实现编辑器的各种操作,以插入视频为例,外部的wkwebview只需要执行js方法evaluateJavaScript:‘zss_editor.insertVideo(...)’,将url带入
3.EditorView这个文件主要是放wkwebview,以及wkwebview调用ZJSTextEditor.js中js方法的部分。如页面加载完,设置占位文字,或者默认对一些标签的处理
二:开发中产品提出的需求和我的设计方案
1.web端要求dom结构为p.../p p.../p p.../p p.../p p.../p,也就是n个p里包含着你插入的视频图片等子节点?
我的方案:
1.1:在editor.html文件中插入的div中,插入一个默认的空p标签pbr/p,这样会保证你在文字中间插入图片、视频或者换行时,系统给你新增一个p标签包裹而不是div标签
1.2:在插入图片后加入一个空p,在文字中间插入视频后加入一个空的p和br再删除br,插入br是为了在文字中间插入视频时,让系统自动给你补全p标签,否则视频会被加在该文字的下一行。
2.每个图片要紧紧跟随一个图片输入框,且图片输入框支持粘贴,且图片和图片输入框可以通过某个按钮同时被删除?
我的方案:
图片有三个途径添加,第一个是粘贴来的新闻中带有图片,第二个是自己插入的图片,第三个是从html刚刚开始加载时自带图片(从web端发布的文章,在ios端编辑)。
2.1:每个图片要紧紧跟着一个图片输入框,我在三个途径处分别做了图片的处理,首先是自己插入的图片,我在插入图片时,紧接着插入一个textarea标签和一个p标签。插入一个p标签的目的是满足需求1,其次是粘贴来的新闻和html刚刚加载自带的图片,我选择遍历所有的图片标签,首先检查img标签的name属性是否有值,若没有值,新增textarea标签,并设置img标签和textarea标签的name属性为同一个UUID,若name属性有值,检查它的后一个兄弟节点是否跟随一个同name的dom,如果有且是i标签(提交数据时,要将所有的输入框变成i标签,此刻要从i标签变回输入框),将它转化成输入框,如果没有,添加默认输入框。
2.2:图片输入框支持粘贴,textarea自带粘贴
2.3:图片和图片输入框可以通过某个按钮同时被删除,设置img标签和textarea标签的name属性为同一个UUID,用name的原因是document.getElementsByName给的是该name的一组标签,删除时,只需要根据name删除即可
3.从微信或者头条粘贴过来的文章格式有误,文字偏大或者偏小?
我的解决方案:
由于拿不到原文章的js,所以只能在粘贴时去除标签内的所有内联样式。当然这个地方有个特殊情况要处理,比如用户在编辑时,设置了对齐方式,系统会自动给标签加上内联样式,这个样式我们不应该去掉。我的处理方案时自定义一个属性名zjs-style,在用户设置对齐方式时,将标签的style值赋值给zjs-style,我们在合适的时机,根据zjs-style复原其style
4.输入框在提交后变成不可输入的展示区域?
我的解决方案:
在提交时,遍历所有的textarea,若textarea没有值,去掉该textarea,若有值的话,将该textarea替换成i标签,且name值赋值给新的i。
5.从web端来的数据支持展示和再编辑?
我的解决方案:
在editor.html的div中加入默认占位文字!-- defaultContent --,在html资源加载前,将占位文字替换为后台给的html内容,并在网页加载完后,做相关处理
调试工具 :
ipad上一般用的文本编辑器:
1.Byword
Byword 是苹果 iOS 和 Mac 平台上非常有名的文本编辑器,界面极简,功能强大。
2.FioWriter
FioWriter是一款iPhone和iPad上高效的文本编辑器。快速文本编辑, 易用, 速度或者灵活性,适用于写作。
3.iwork
iWork 是苹果公司为OS X 以及 iOS 操作系统开发的办公室软件。最初的套装包含 Keynote,一套原先独立销售的简报软件,以及 Pages,一套整合文书处理及页面排版的应用程序。
WordPress-iOS-Editor requires iOS 10.0 or higher. It depends on the following Apple frameworks:
Foundation.framework
UIKit.framework
CoreGraphics.framework
CoreText.framework
and the following CocoaPods:
CocoaLumberjack
WordPressCom-Analytics-iOS
See the podspec for more details.
持续添加中 ……
编辑器软件。
untitled是文本编辑器、十六进制编辑器、html编辑器、PHP编辑器、Javascript编辑器、Perl编辑器和程序编辑器等。
它的用途非常广泛,可以用来编辑文本、编写代码等。
前言:
公司需要做一个日记本类型的APP,要求可插入图片,有行间距,调整字体大小,颜色等功能。
效果:
思路:
1.webView 实现(不会,pass)
2.使用富文本
实现:
1. 使用textView 的富文本属性
2.每次文字发生变化 使用数组记录 文字的所有属性
3.当退出时保存所有属性
4. 刷新首页页面数组
5.再次进入时,使用保存的属性
参考:
(可以输入中文,如果没记错,图片改大后,输入文字会出现跳屏的bug)
(功能挺多,but 不能输入中文。。。)
我是把这两个demo 的功能整合了一下,外加修改了一些细节和bug。
大家也可也参考参考。
源码: LHRichEditor
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流