1、增加textView.的inputAccessoryView
2、AccessoryView类及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.image、public.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。
’
3、UITextView有placeHolder时&#xff0c;可使用JSQMessagesComposerTextView。当然自己实现也是一样&#xff0c;基本类似。但是JSQMessageViewController是不粗的&#xff0c;在聊天窗口中是可以使用。见http://cocoadocs.org/docsets/JSQMessagesViewController/7.0.1/
4、[aNSArray makeObjectsPerformSelector:(SEL)aSelector];可循环执行Sel。例如用在removeFromSuperview.