重磅出击 实现IOS下内嵌HTML编辑器 Objective-C 与 JavaScript 通信攻关

简介: 通过接近N天的努力. 终于在今天.IOS下内嵌HTML编辑器的Demo 基本实现. 学习过程中,参考了很多网上的资料.很感谢这些分享资源的牛人.有你们.

通过接近N天的努力. 终于在今天.IOS下内嵌HTML编辑器的Demo 基本实现.

学习过程中,参考了很多网上的资料.很感谢这些分享资源的牛人.有你们.. 才能顺利拿下这个比较特别的需求.

我使用的HTML编辑器是金山开源的 KindEditor        

利用UIWebView 加载 KindEditor (也就是我说的内嵌). 实现IOS下用户可以进行富文本编辑.

主要目的是保证服务端的内容值不丢失.亦可在移动端对内容进行一些简单的修改.


途中难点在于,如何与 KindEditor 的进行数据交互.

百度谷歌一把. 牛人被我找到了: Objective-C 与 JavaScript 通信攻关

这个开源项目对通信代码进行了包装. 使用起来非常简单. 最关键基于SBJson 进行 Json 传参. 结构清晰明了.


实现方面将KindEditor 直接加入程序包中,做为整个Demo的一部分. 当然咯,这避免不了安装包会变大一些.(不知道App Store审核方面允不允许. 有点担忧.)

但访问本地网页的速度非常值得信赖,也算是有得有失吧. 总之,根据实际情况:可以酌情修改是本地还是外部访问.

本次的Demo完成后,唯一遗憾的是4.X的IOS版本对JavaScript的支持还不够完善,导致KindEditor的显示和执行. 都无法正常工作.

为此. 只能利用UITextView 在载入HTML内容时,以进行一些简单的内容过滤. 只支持识别  空格,换行.两项. 至于其他HTML标签都会被扫描裁剪掉.

5.X以上的IOS版本.就可以完美支持.可见Safari对JavaScript的支持在一点一点的完善.(不知道说的对不对.)


我在Demo中加入了IOS版本识别. 以确定到底加载UITextView 还是 UIWebView.


本Demo的亮点是基于自定义控件的思想去实现的. 

我们后面在使用时.非常方便.只需要实例化自定义控件,设置好控件的位置和大小. 实现仅一个必要的委托

customerHTMLEditor = [[UICustomHTMLEditoralloc]init];

customerHTMLEditor.delegate =self;

[self.viewaddSubview:customerHTMLEditor];

当然,肯定还有很多地方需要完善,非常希望能够提出宝贵的建议和想法.以便做出更完善的自定义控件.

附上一张效果图,展示下我的成果:




最后附上本次博文的 Demo. 以供下载学习交流.

Demo


Date:2012-04-11

今天为Demo 完善了两个细节

1:修改了初始化方法,让自定义控件可以加载来自服务器的HTML编辑器. 只需要将HTML编辑器文件拷贝到服务器指定位置,在初始化时提供正确的链接即可加载

2:在UIWebView加载HTML编辑器时,显示Loading 成功加载后,隐藏Loading. 使用了第三方开源Loading库(MBProgressHUB).



Date:2012-05-09

经过接近一个月的沉淀,Demo有了全新的改进

1:内存问题调优

2:正则表达式智能缓存图片标签<IMG>

3:JS与OC的通信接口添加新的类型参数

全新的Demo:Demo


Data:2012-07-10

去除编辑器的背景色的方式

修改样式文件,路径如下:

/Users/amarishuyi/Desktop/Work/FEOA 1.0/FEOA Other/KindEditor/themes/default/default.css

搜索FFF.  将找到的第一行删除即可



目录
相关文章
|
4月前
|
前端开发
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
|
1月前
|
Web App开发 移动开发 HTML5
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码
html5 + Three.js 3D风雪封印在棱镜中的梅花鹿动效源码。画面中心是悬浮于空的梅花鹿,其四周由白色线段组成了一个6边形将中心的梅花鹿包裹其中。四周漂浮的白雪随着多边形的转动而同步旋转。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
83 2
|
2月前
|
前端开发 JavaScript 安全
HTML+CSS+JS密码灯登录表单
通过结合使用HTML、CSS和JavaScript,我们创建了一个带有密码强度指示器的登录表单。这不仅提高了用户体验,还帮助用户创建更安全的密码。希望本文的详细介绍和代码示例能帮助您在实际项目中实现类似功能,提升网站的安全性和用户友好性。
57 3
|
2月前
|
JavaScript
JS鼠标框选并删除HTML源码
这是一个js鼠标框选效果,可实现鼠标右击出现框选效果的功能。右击鼠标可拖拽框选元素,向下拖拽可实现删除效果,简单实用,欢迎下载
50 4
|
2月前
|
移动开发 HTML5
html5+three.js公路开车小游戏源码
html5公路开车小游戏是一款html5基于three.js制作的汽车开车小游戏源代码,在公路上开车网页小游戏源代码。
74 0
html5+three.js公路开车小游戏源码
|
2月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
154 6
|
3月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
148 1
|
4月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 节点列表
JavaScript HTML DOM 节点列表
29 5
|
4月前
|
JavaScript 前端开发 索引
JavaScript HTML DOM 集合(Collection)
JavaScript HTML DOM 集合(Collection)
45 4
|
4月前
|
JavaScript 前端开发
JavaScript HTML DOM 事件
JavaScript HTML DOM 事件
33 5