热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

seven叶项目总结03

1、增加textView.的inputAccessoryView2、AccessoryView类及delegate实现。-(instancetype)initWithTitle

1、增加textView.inputAccessoryView

2AccessoryView类及delegate实现。

- (instancetype)initWithTitles:(NSArray*)titles icons:(NSArray*)icons中增加@selector。处理可统一方法中处理,

a,拍照、视频。使用UIImagePickerController。根据UIImagePickerControllerSourceType的不同,并且指定其sourceType,mediaTypes。由其(UIVC*)delegate进行presentVC等操作。

b,相册中选择图片,使用ELCImagePickerController。因为系统的不支持图片多选。

选择、拍照成功后,走didFinishPickingMediaWithInfo代理方法,通过       

 NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];

获取到类型public.imagepublic.movie。分别进行处理。使用压缩图片在界面上显示,视频获取截图后放入数组显示。

c,图片对象先保存在数组(内存)中,发送之前进行缓存到磁盘中,发送成功\失败后清除缓存。因为发送时需要文件的URL,图片是读取的对象,手动存到本地再发送,视频文件直接有URL发送。   

 [[AFAppDotNetAPIClient sharedClient] POST:HTTP_UPLOADFILES

                                       parameters:@{@"upload_type" : @""}

                        constructingBodyWithBlock:^(id formData) {

                            for (int i &#61; 0; i <[vedios count]; i&#43;&#43;) {

                                NSString *path &#61; [NSTemporaryDirectory() stringByAppendingPathComponent:[[vedios[i] componentsSeparatedByString:&#64;"/"] lastObject]];

                                if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {

                                    [formData appendPartWithFileURL:[NSURL fileURLWithPath:path] name:[NSString stringWithFormat:&#64;"attach_vedio_%d",i] error:nil];

                                }

                            }

                        }

                                          success:^(NSURLSessionDataTask *task, id responseObject) {

                                              NSLog(&#64;"上传视频返回数据:\n %&#64;",[responseObject nonEmptyDictionary][&#64;"info"]);

                                              if (失败){

                                              } else {

//成功&#xff0c;携带返回数据进行下一步。

                                             }

                                          }

                                          failure:^(NSURLSessionDataTask *task, NSError *error) {

                                          }];

    });

d,点击图片、视频的预览功能。预览图片使用的IDMPhotoBrowser&#xff0c;将图片数组传入&#xff0c;可滑动浏览、删除&#xff0c;视频使用系统MPMoviePlayerViewController

3UITextViewplaceHolder时&#xff0c;可使用JSQMessagesComposerTextView。当然自己实现也是一样&#xff0c;基本类似。但是JSQMessageViewController是不粗的&#xff0c;在聊天窗口中是可以使用。见http://cocoadocs.org/docsets/JSQMessagesViewController/7.0.1/


4[aNSArray makeObjectsPerformSelector:(SEL)aSelector];可循环执行Sel。例如用在removeFromSuperview.






推荐阅读
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在 iOS 开发中,经常会遇到 `@(YES)`、`@[firstViewController]` 以及 `@{@a:@b}` 这样的语法糖。这些简化的写法分别用于初始化布尔值、数组和字典对象,能够显著提高代码的可读性和编写效率。例如,`@(YES)` 可以快速创建一个布尔值对象,`@[firstViewController]` 则用于创建包含单个元素的数组,而 `@{@a:@b}` 则用于创建键值对字典。理解这些语法糖的使用方法,有助于开发者更加高效地进行编码。 ... [详细]
  • 深入解析Android 4.4中的Fence机制及其应用
    在Android 4.4中,Fence机制是处理缓冲区交换和同步问题的关键技术。该机制广泛应用于生产者-消费者模式中,确保了不同组件之间高效、安全的数据传输。通过深入解析Fence机制的工作原理和应用场景,本文探讨了其在系统性能优化和资源管理中的重要作用。 ... [详细]
  • 在Android开发中,当TextView的高度固定且内容超出时,可以通过设置其内置的滚动条属性来实现垂直滚动功能。具体来说,可以通过配置`android:scrollbars="vertical"`来启用垂直滚动,确保用户能够查看完整的内容。此外,为了优化用户体验,建议结合`setMovementMethod(ScrollerMovementMethod.getInstance())`方法,使滚动操作更加流畅和自然。 ... [详细]
  • 在使用 Qt 进行 YUV420 图像渲染时,由于 Qt 本身不支持直接绘制 YUV 数据,因此需要借助 QOpenGLWidget 和 OpenGL 技术来实现。通过继承 QOpenGLWidget 类并重写其绘图方法,可以利用 GPU 的高效渲染能力,实现高质量的 YUV420 图像显示。此外,这种方法还能显著提高图像处理的性能和流畅性。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
author-avatar
黄志琴文菱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有