day4

修改UITextField的占位文字颜色

  • 富文本属性
@property(nullable, nonatomic,copy)   NSAttributedString     *attributedPlaceholder;
  • 重写方法
- (void)drawPlaceholderInRect:(CGRect)rect;
  • KVC
[self setValue:xmg_placeholderColor forKeyPath:@"placeholderLabel.textColor"];

监听UITextField的【开始编辑】和【结束编辑】事件

addTarget:

[self addTarget:self action:@selector(editingDidBegin) forControlEvents:UIControlEventEditingDidBegin];
[self addTarget:self action:@selector(editingDidEnd) forControlEvents:UIControlEventEditingDidEnd];

delegate

#pragma mark - <UITextFieldDelegate>
///**
// *  在开始编辑之前会调用这个方法
// *
// *  @return YES:可以开始编辑,NO:不允许开始编辑
// */
//- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
//{
//    XMGLogFunc
//    return YES;
//}

/**
 *  已经开始编辑后会调用这个方法
 */
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    self.xmg_placeholderColor = self.textColor;
}

/**
 *  已经结束编辑后会调用这个方法
 */
- (void)textFieldDidEndEditing:(UITextField *)textField
{
    self.xmg_placeholderColor = [UIColor grayColor];
}

通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(beginEditing:) name:UITextFieldTextDidBeginEditingNotification object:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(endEditing) name:UITextFieldTextDidEndEditingNotification object:self];

内部的特性(重写内部的某些方法)

/**
 *  开始编辑
 */
- (BOOL)becomeFirstResponder
{
    self.xmg_placeholderColor = self.textColor;
    return [super becomeFirstResponder];
}

/**
 *  结束编辑
 */
- (BOOL)resignFirstResponder
{
    self.xmg_placeholderColor = [UIColor grayColor];
    return [super resignFirstResponder];
}

AFN的使用建议

  • 子类化AFHTTPSessionManager
@interface XMGHTTPSessionManager : AFHTTPSessionManager

@end

@implementation XMGHTTPSessionManager

- (instancetype)initWithBaseURL:(NSURL *)url sessionConfiguration:(NSURLSessionConfiguration *)configuration
{
    if (self = [super initWithBaseURL:url sessionConfiguration:configuration]) {
//        self.securityPolicy = ...;
//        self.responseSerializer = ...;
//        self.requestSerializer = ...;
    }
    return self;
}

@end
  • 拥有Manager对象,统一管理所有请求
/** 请求管理者 */
@property (nonatomic, weak) XMGHTTPSessionManager *manager;

#pragma mark - 懒加载
- (XMGHTTPSessionManager *)manager
{
    if (!_manager) {
        _manager = [XMGHTTPSessionManager manager];
    }
    return _manager;
}
  • 使用统一的manager对象发请求(在success和failure中,使用weakSelf来访问)
[self.manager GET:@"http://api.budejie.com/api/api_open.php" parameters:params success:^(NSURLSessionDataTask * _Nonnull task, NSArray * _Nonnull responseObject) {


    // 隐藏弹框
    [SVProgressHUD dismiss];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    if (error.code == NSURLErrorCancelled) {
        // 取消了任务
        return;
    }

    // 提示错误信息
    [SVProgressHUD showErrorWithStatus:@"网络繁忙,请稍后再试!"];
}];

使用AFN取消请求

for (NSURLSessionTask *task in self.manager.tasks) {
    [task cancel];
}

[self.manager.tasks makeObjectsPerformSelector:@selector(cancel)];

[self.manager invalidateSessionCancelingTasks:YES];

Xcode的插件安装路径

/Users/用户名/Library/Application Support/Developer/Shared/Xcode/Plug-ins
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值