iOS开发json
在作发布做品的数据框时,须要自定义一个TextView,由于自带的不能知足需求:api
UITextField : 不能换行缓存
UITextView :没有提示文字app
IWComposeViewController.m 发微博工具
// // IWComposeViewController.m // ItcastWeibo // // Created by apple on 14-5-19. // Copyright (c) 2014年 itcast. All rights reserved. // /** UITextField : 不能换行 UITextView :没有提示文字 */ #import "IWComposeViewController.h" #import "IWTextView.h" @interface IWComposeViewController () @property (nonatomic, weak) IWTextView *textView; @end @implementation IWComposeViewController - (void)viewDidLoad { [super viewDidLoad]; // 设置导航栏属性 [self setupNavBar]; // 添加textView [self setupTextView]; } /** * 添加textView */ - (void)setupTextView { // 1.添加 IWTextView *textView = [[IWTextView alloc] init]; textView.font = [UIFont systemFontOfSize:15]; textView.frame = self.view.bounds; [self.view addSubview:textView]; // 让textView成为第一响应者,弹出键盘 [textView becomeFirstResponder]; self.textView = textView; // 2.监听textView文字改变的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextViewTextDidChangeNotification object:textView]; } /** * 监听文字改变 */ - (void)textDidChange { self.navigationItem.rightBarButtonItem.enabled = (self.textView.text.length != 0); // self.navigationItem.rightBarButtonItem.enabled = self.textView.text.length; } /** * 设置导航栏属性 */ - (void)setupNavBar { self.view.backgroundColor = [UIColor whiteColor]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(cancel)]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"发送" style:UIBarButtonItemStyleDone target:self action:@selector(send)]; self.navigationItem.rightBarButtonItem.enabled = NO; self.title = @"发微博"; } /** * 取消 */ - (void)cancel { [self dismissViewControllerAnimated:YES completion:nil]; } /** * 发微博 */ - (void)send { } @end
2. 在IWAppDelegate.m代理中监听内存警告,并清除缓存的图片:atom
-(void)applicationDidReceiveMemoryWarning:(UIApplication *)application { // 中止下载全部图片 [[SDWebImageManager sharedManager] cancelAll]; // 清除内存中的图片 SDWebImageManager会作内存缓存和硬盘缓存 [[SDWebImageManager sharedManager].imageCache clearMemory]; }
三、编辑文本框,当用户进入到发微博页面时,须要弹出键盘,而不是须要用户点击才出现键盘。spa
/** * 添加textView */ - (void)setupTextView { // 1.添加 IWTextView *textView = [[IWTextView alloc] init]; textView.font = [UIFont systemFontOfSize:15]; textView.frame = self.view.bounds; [self.view addSubview:textView]; // *********让textView成为第一响应者,弹出键盘******** [textView becomeFirstResponder]; self.textView = textView; // 2.监听textView文字改变的通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextViewTextDidChangeNotification object:textView]; }
咱们能够看到,在点击+号进入发布微博界面,有一些稍微的卡顿,这是由于view未所有加载完而弹出键盘,为了用户体验,这里这样作:等textView加载完后,在弹出键盘。代理
// 等textview加载完毕后,让textView成为第一响应者,弹出键盘 -(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.textView becomeFirstResponder]; }
效果展现:code
控制器加载完后,键盘才弹出:server
好的,接下来查询新浪微博的开放接口文档http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
找到发微博的接口:
发布一条新微博 https://api.weibo.com/2/statuses/update.json
在发布微博的控制器IWComposeViewController.m实现发微博功能:
#import "IWComposeViewController.h" #import "IWTextView.h" #import "AFNetworking.h" // 新增 #import "IWAccount.h" // 新增 #import "IWAccountTool.h" // 新增 #import "MBProgressHUD+MJ.h" // 新增 /** * 发微博 */ - (void)send { // AFNetworking\AFN // 1.建立请求管理对象 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; // 2.封装请求参数 NSMutableDictionary *params = [NSMutableDictionary dictionary]; // 发送内容 params[@"status"] = self.textView.text; // 根据以前封装的帐号工具类IWAccountTool,登录受权的帐号信息被保存在本地,而后经过帐号属性获取access_token params[@"access_token"] = [IWAccountTool account].access_token; // 3.发送请求 [mgr POST:@"https://api.weibo.com/2/statuses/update.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { [MBProgressHUD showSuccess:@"恭喜,发送成功"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 隐藏提醒框 [MBProgressHUD showError:@"抱歉,发送失败"]; }]; // 4.关闭控制器。当用户点击发送微博按钮后,须要将发微博界面关掉,由于发微博有时可能须要很长时间 [self dismissViewControllerAnimated:YES completion:nil]; }
OK,到目前为止,发送文字的微博功能,完美实现 ^_^