基于 UIWebView 实现
第一种方案,你需要自己去实现很多在 webview 已经很成熟的效果,比如链接,字体加粗,标题,引用样式,列表样式等等,这些的工作量都比较可观,而且还有 iOS / Android 两端的对齐问题。还有一个问题,这个可能是我们项目相关的问题,我们在原来还没有很多富文本要求的情况下,在 textView 上做了一些我们对链接的处理工作,仅仅这一个方面,当时就觉得不是很方便。
第二种方案,你可以借助 webview 省掉很多在第一种方案里面提到的工作,同时webview相对而言,开源的可供参考的项目也更多一点,不过 webview 也会存在光标的控制,css 的冲突处理以及兼容性的问题,不过在最终选择方案的时候,我们几经权衡,最终选择了 webview 的方案。
悲催经历
,不过我们最后的处理方案和他略有不同,我们是通过判断当前光标所在的Node是不是有blockquote标签或者是不是含有blockquote标签的Node的子node来决定是添加引用还是取消引用,伪代码如下:
1 2 3 4 5
|
if (inQuoteBlock.is) { document.execCommand('formatBlock', false, "<div>") } else { document.execCommand('formatBlock', false, "<blockquote>") }
|
同样的还有标题设置等等都有这样的问题。