iOS中的中文编辑器
编辑器方案选择:
1、原生的 coretext,参考LMNote,可以高度自定义操作,细节能拉满,不适合跨平台。
2、基于网页,设置css的 editable=true的样式,各种国外的库,AztecEditor-iOS-develop,RichEditorView-master, zssricheditor等,不适合中文缩进等格式不符合需求。
3、基于国人开源的 wang_editor编辑器,移植到移动平台,完美适配中文编辑器需求,缺点需要自定义各种js方法,很多细节需要自己想办法适配或者规避。
4、集成方案
**核心依赖:pod ‘SFRichTextEditor’, :git => ‘**https://gitlab.weike.fm/mobile/sfrichtexteditor.git‘
- 是一个OC写的编辑器的库,基于zss开源库上面改的。原来的库支持的是英文编辑器的功能。之后通过改造只保留编辑相关的上层UI(ZSSRichTextEditor文件),具体编辑器下的每一种功能是通过Resources路径下的wang_editor实现,比如字体加粗,缩进等。如果编辑器的细节需要修改微调也是通过修改ZSSRichTextEditor这个文件实现。
- 几个核心js文件:
wang_app_editor.js: 编辑器加粗等斜体等功能实现,回调
wang_editor.html: 网页,ZSSRichTextEditor加载的html,里面引用了wang_app_editor.js,另外添加了写作业相关的方法
wang_editor_index.js: 不需要动,是wang库自带的文件
wang_preview.js:是作业预览的网页需要的,实现高亮显示的功能,其实和SFRichTextEditor这个库没啥关系。最终是给上层的WKHomeworkPreviewWebView文件用的。
wang_style.css:样式,编辑器的细节样式通过修改这里,一般也不用修改。
核心文件:
- WKHomeworkPreviewPageView:WKHomeworkPreviewWebView的容器;
- WKHomeworkPreviewWebView:用来渲染编辑器提交的html,注入js的各种操作,高亮,点击事件等;
- WTEditorViewController:编辑器,继承自ZSSRichTextEditor,主要用来实现加载写作模版,记时,字数统计,图片上传,作业提交,点评面板弹出等上层功能。
踩坑日记:
光标的各种问题
获取焦点
随着输入,编辑区域自动滚动
不能正常插入图片的问题(window.location.href报错,优先用window.webkit.messageHandlers.jsm.postMessage(msg))