修改UITextField的占位文字颜色
@property(nullable, nonatomic,copy) NSAttributedString *attributedPlaceholder;
- (void)drawPlaceholderInRect:(CGRect)rect;
[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>
/**
* 已经开始编辑后会调用这个方法
*/
- (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的使用建议
@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
/** 请求管理者 */
@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