【ios 富文本编辑器那个好】

  • 时间:
  • 浏览:16
  • 来源:跟我学网络

2016-03-23 16:35:14 pzhtpf 阅读数 10110

github地址

WordPress-Editor-iOS-Extension 是从 WordPress-Editor-iOS 的扩展,他支持“从相册中选择”,“拍照”,“插入网络图片”三种方式。并允许用户可以定制编辑器的工具栏。

The expansion of “WordPress-Editor-iOS-Extension” from “WordPress-Editor-iOS”, his support “photo library” and “take photo”, “insert network picture” three ways. And can allow users to customize the editor toolbar.

  1. 你可以设置工具栏的主体色(you can set itemTintColor)
self.itemTintColor = [UIColor redColor];

2016-12-09 18:12:49 gaoyuqiang30 阅读数 5828

我一直在搜询一个ios上最好用的富文本编辑器,主要两种实现方法:

1.基于webView

ZSSRichTextEditor(GitHub)

2.基于CoreText

1>DTRichTextEditor

DTRichTextEditor--->DTCoreText---->CoreText

我现在的项目就是用的这个库

注:DTCoreText:只能显示富文本,但是不能编辑!非常常用呀!聊天页面的图文混排一般都是用的它!

2>Omni Group Text Editor

3>FastTextView

        4>YYText

国产的,但是估计没国外的好用,我比较崇洋媚外吧

最后:如果只是显示富文本,而不编辑,可以直接用UITextView,webView,当然我还是觉得DTCoreText更好一些。如果你想直接用原生自带的coretext库,劝你还是放弃吧,坑太多,不要重复造轮子。

2016-10-08 14:54:58 qq_30513483 阅读数 3059



前言:最近帮公司的一名程序员搞一个项目的收尾工作,差一个富文本编辑器功能未实现,时间紧迫,调研了下网上的解决方法均较为繁琐. 不得已找了个别门来实现该问题,且看下文

  • 需要实现的效果

需要实现的效果

  • 解决思路

    采用webview加载一个本地html文件,该html内部编写好js方法用于与oc相互调用 最终输出该富文本字符串传输给服务器

  • 为什么选择这样的方式

    服务端要求我最终返回的数据格式为:

    {
      @"Id":"当时新建模板这个不传,更新模板必须传",
      @"title":"模板标题",
      @"text":"<p dir="ltr">测试文字</p>
    ![](http://upload-images.jianshu.io/upload_images/1694866-a9a1da57455b2054.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)<p>![](http://pic.baikemy.net/apps/kanghubang/486/3486/1457968327238.amr@type=1@duration=1852)<p>",
      @"sendstr":"22372447516929 如果模板要保存同时发送给患者,这个值必须传,可以多个患者发送患者id以逗号隔开"
      @"1457968280769.jpg":
      @"文件名":"BACES64 数据 这个是多个图片或语音一起上传"
    }

    其中text字段即为富文本字段.

    同时又需要编辑已有文本等功能.倘若用原生代码写较为复杂,最终选择了使用本地html代码实现


  • 解决步骤

    新建一个richTextEditor.html文件

    1.页面设计
/*界面不要太简单 一个简单的输入框*/
 <style>
    img 
    {
      display: block;
      width: 100%;
      margin-top: 10px;
      margin-bottom: 10px;
      }
    [contenteditable=true]:empty:before
    {
      content: attr(placeholder);
      color: #a6a6a6;
    }
    #content 
    {
      padding: 10px 0;
      font-family:Helvetica;
      -webkit-tap-highlight-color: rgba(0,0,0,0);
      min-height:100px;
     }

<div id="content" contenteditable="true" onmouseup="saveSelection();" onkeyup="saveSelection();" onfocus="restoreSelection();" placeholder="轻触屏幕开始编辑正文" ></div>

2.js方法设计

  • 插入图片
 function insertImage(imageName, imagePath)
  {
    restoreSelection();
    var imageElement = document.createElement('img');
    var breakElement = document.createElement('div');
    imageElement.setAttribute('src', imagePath);
    imageElement.setAttribute('id', imageName);
    breakElement.innerHTML = "<br>";
    editableContent.appendChild(imageElement);
    editableContent.appendChild(breakElement);
  }

  function updateImageURL(imageName, imageURL) {
    var selectedElement = document.getElementById(imageName);
    selectedElement.setAttribute('src', imageURL);
  }
  • 获取html代码
function placeHTMLToEditor(html)
{
    editableContent.innerHTML = html;
}

4.oc与js相互调用

  • oc端实例一个webview加载该html和一个按钮用于添加图片
    self.webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 64+50, [UIScreen mainScreen].bounds.size.width, self.view.frame.size.height - 50)];
    self.webView.delegate = self;
    [self.view addSubview:self.webView];

    NSBundle *bundle = [NSBundle mainBundle];
    NSURL *indexFileURL = [bundle URLForResource:@"richTextEditor" withExtension:@"html"];

    [self.webView setKeyboardDisplayRequiresUserAction:NO];
    [self.webView loadRequest:[NSURLRequest requestWithURL:indexFileURL]];

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn addTarget:self action:@selector(addImage:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
  • 添加完图片后与html对接
  
    NSString *imageName = [NSString stringWithFormat:@"iOS%@.jpg", [self stringFromDate:[NSDate date]]];
    NSString *imagePath = [documentsDirectory stringByAppendingPathComponent:imageName];
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    NSInteger userid = [[NSString stringWithFormat:@"%@", [[NSUserDefaults standardUserDefaults] objectForKey:@"userID"]] integerValue];
    NSString *url = [NSString stringWithFormat:@"http://pic.baikemy.net/apps/kanghubang/%@/%@/%@",[NSString stringWithFormat:@"%ld",userid%1000],[NSString stringWithFormat:@"%ld",(long)userid ],imageName];

    NSString *script = [NSString stringWithFormat:@"window.insertImage('%@', '%@')", url, imagePath];
    NSDictionary *dic = @{@"url":url,@"image":image,@"name":imageName};
    [_imageArr addObject:dic];
    [self.webView stringByEvaluatingJavaScriptFromString:script];
  • 编辑完成后拿出html代码
    NSString *html = [self.webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('content').innerHTML"];
  • 编辑服务器中的富文本
      NSString *place = [NSString stringWithFormat:@"window.placeHTMLToEditor('%@')",self.inHtmlString];
      [webView stringByEvaluatingJavaScriptFromString:place];

5.与服务端对接

此时我们取出的富文本如下:

企鹅的时候要[站外图片上传中……(4)]<div>阿空间里发红包啦?我</div>[站外图片上传中……(5)]<div><br></div>

其中id部分为我处理的特殊部分

处理方法如下

-(NSString *)changeString:(NSString *)str
{    
    NSMutableArray * marr = [NSMutableArray arrayWithArray:[str componentsSeparatedByString:@"\""]];

    for (int i = 0; i < marr.count; i++)
    {
        NSString * subStr = marr[i];
        if ([subStr hasPrefix:@"/var"] || [subStr hasPrefix:@" id="])
        {
            [marr removeObject:subStr];
            i --;
        }
    }
    NSString * newStr = [marr componentsJoinedByString:@"\""];
    return newStr;
}

至此可实现一个富文本编辑器的新增与编辑.

  • Demo

文/五阿哥永琪(简书作者)

原文链接:http://www.jianshu.com/p/b2a0528659bd

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

2016-03-24 10:43:00 weixin_30293135 阅读数 43

关于ios中富文本编辑的一个巧妙解决方案

项目中需要用到富文本的编辑功能,作为ios客户端富文本的编辑功能开发耗费是比较大的,现在有一种解决方案是:服务器端返回一个嵌有富文本编辑器的网 页,我们可以在富文本编辑器上边进行文本的编辑,然后就可以调用网页中保存富文本的接口,将编辑好的富文本插入到数据库中,这样便可以实现富文本编辑的功 能.

转载于:https://www.cnblogs.com/Sunnyheart/p/5314497.html

2018-09-18 14:14:56 m0_37937984 阅读数 1999

一个日记本类型的APP,要求可插入图片,有行间距,调整字体大小,颜色等功能。

思路:

富文本

实现:

  1. 使用textView 的富文本属性

2.每次文字发生变化 使用数组记录 文字的所有属性

3.当退出时保存所有属性

  1. 刷新首页页面数组

5.再次进入时,使用保存的属性

demo

富文本编辑github Demo