博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS博客项目搭建-13-发微博弹窗
阅读量:2384 次
发布时间:2019-05-10

本文共 4370 字,大约阅读时间需要 14 分钟。

iOS开发

在做发布作品的数据框时,需要自定义一个TextView,因为自带的不能满足需求:

 UITextField : 不能换行

 UITextView :没有提示文字

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代理中监听内存警告,并清除缓存的图片:

          -(void)applicationDidReceiveMemoryWarning:(UIApplication *)application{    // 停止下载所有图片    [[SDWebImageManager sharedManager] cancelAll];        // 清除内存中的图片 SDWebImageManager会做内存缓存和硬盘缓存    [[SDWebImageManager sharedManager].imageCache clearMemory];    }

3、编辑文本框,当用户进入到发微博页面时,需要弹出键盘,而不是需要用户点击才出现键盘。

083727_CO0u_2557944.png

       /** *  添加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];}

085743_ToL0_2557944.gif

我们可以看到,在点击+号进入发布微博界面,有一些稍微的卡顿,这是因为view未全部加载完而弹出键盘,为了用户体验,这里这样做:等textView加载完后,在弹出键盘。

    //  等textview加载完毕后,让textView成为第一响应者,弹出键盘-(void)viewDidAppear:(BOOL)animated{    [super viewDidAppear:animated];    [self.textView becomeFirstResponder];}

效果展示:

控制器加载完后,键盘才弹出:

091307_rZ5O_2557944.gif

好的,接下来查询新浪微博的开放接口文档

找到发微博的接口:

091908_3r4R_2557944.png

发布一条新微博  

  在发布微博的控制器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];        }

100757_ZEA0_2557944.gif

OK,到目前为止,发送文字的微博功能,完美实现 ^_^

转载于:https://my.oschina.net/corwien/blog/671422

你可能感兴趣的文章
SQLite通用数据库类
查看>>
CMD下修改IP地址!
查看>>
安卓手机可以连上wifi但无法上网的解决办法
查看>>
C++程序员常用工具集
查看>>
在CSDN博客中添加量子恒道统计功能的做法
查看>>
C++调用IDL程序的做法(一)
查看>>
外部修改应用程序图标的做法
查看>>
database disk image is malformed解决方法
查看>>
有关error PRJ0003错误的思考
查看>>
实现自定义对话框程序快捷键的两种方法
查看>>
如何对抗微软霸权,google给我们上了一课
查看>>
获取windows版本信息的做法
查看>>
忆父亲
查看>>
png库结合zlib库使用出现的一个链接问题的解决
查看>>
STL数组和com数组相互转换的做法
查看>>
开发平台软件中关于第三方库管理的一些思考
查看>>
svn创建分支的做法
查看>>
“当前不会命中断点。源代码与原始版本不同”的问题的有效解决办法
查看>>
对面向对象和面向过程的一些新理解
查看>>
软件开发中的资源管理
查看>>