新浪微博客户端(37)-发布新微博

DJComposeViewController.m

复制代码
#import "DJComposeViewController.h"
#import "DJAccountTool.h"
#import "DJTextView.h"
#import "AFHTTPSessionManager.h"
#import "MBProgressHUD+MJ.h"


@interface DJComposeViewController()

@property (nonatomic,weak) DJTextView *inputView;

@end

@implementation DJComposeViewController




- (void)viewDidLoad {

    [super viewDidLoad];
    [self initNavigationView];
    [self initInputView];

}


- (void)viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];
     self.navigationItem.rightBarButtonItem.enabled = NO;
    
}


/** 初始化NavigationView */
- (void)initNavigationView {

    self.view.backgroundColor = [UIColor whiteColor];
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(finish)];
    
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"发送" style:UIBarButtonItemStylePlain target:self action:@selector(send)];
    
    
    
    
    UILabel *titleView = [[UILabel alloc] init];
    titleView.width = 200;
    titleView.height = 44;
    titleView.numberOfLines = 0; // 设置titleView 为多行显示
    titleView.textAlignment = NSTextAlignmentCenter;
    
    DJAccount *account = [DJAccountTool account];
    NSString *nickName = account.screen_name;
    NSString *prefix = @"发微博";
    NSString *str = [NSString stringWithFormat:@"%@\n%@",prefix,nickName];
    NSRange nick_name_range = [str rangeOfString:nickName];
    NSRange prefix_range = [prefix rangeOfString:prefix];
    
    NSMutableAttributedString *titleStr = [[NSMutableAttributedString alloc] initWithString:str];
    [titleStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:13] range:nick_name_range];
    [titleStr addAttribute:NSFontAttributeName value:[UIFont boldSystemFontOfSize:15] range:prefix_range];
    
    
    titleView.attributedText = titleStr;
    self.navigationItem.titleView = titleView;
    
}



/** 初始化输入区域 */
- (void)initInputView {

    DJTextView *inputView = [[DJTextView alloc] init];
    inputView.frame = self.view.bounds;
    inputView.font = [UIFont systemFontOfSize:14];
    inputView.placeholder = @"请输入微博内容";
    inputView.placeholderColor = [UIColor grayColor];
    [self.view addSubview:inputView];
    self.inputView = inputView;
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textHasChange) name:UITextViewTextDidChangeNotification object:inputView];

}



- (void)finish {

    [self dismissViewControllerAnimated:YES completion:nil];
    
}


/** 监听TextView文本改变 */
- (void)textHasChange {
    
    // 若用户已经为textView输入了文本,则发送按钮可点击
    self.navigationItem.rightBarButtonItem.enabled = self.inputView.hasText;

}


/** 发微博 */
- (void)send {

    [self sendStatusRequest];
    
}



/** 发微博 */
- (void)sendStatusRequest {

    AFHTTPSessionManager *RequestManager = [AFHTTPSessionManager manager];
    NSString *urlString = @"https://api.weibo.com/2/statuses/update.json";
    
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"access_token"] = [DJAccountTool account].access_token;
    params[@"status"] = self.inputView.text;
    
    [RequestManager POST:urlString parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        [MBProgressHUD showSuccess:@"发送成功"];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        [MBProgressHUD showError:@"发送失败"];
    }];
    [self dismissViewControllerAnimated:YES completion:nil];
}


- (void)dealloc {

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}



@end
复制代码

最终效果:

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   夜行过客  阅读(257)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示