重新UITextField定制成自己需要的,什么时候需要生日,日期选择等情况下,直接引入头文件就可以使用,非常的方便。
在使用之前首先要对UITextField的代理方法进行设置,目的是:让输入框只能选择不能认为输入
(1)遵守 <UITextFieldDelegate> 代理
(2)指定代理 self.birthdayTextF.delegate = self;
(3)修改代理方法
// 是否允许文本框的内容(no/false 拦截用书输入 true/yes 允许用户输入)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
return false; // 不允许用户输入
}
.h
文件
#import <UIKit/UIKit.h>
@interface YYBirthdayTextField : UITextField
@end
.m
文件
#import "YYBirthdayTextField.h"
@interface YYBirthdayTextField()
@property (nonatomic, strong) UIDatePicker *datePickView;
@end
@implementation YYBirthdayTextField
- (UIDatePicker *)datePickView{
if (!_datePickView) {
UIDatePicker *datePick = [[UIDatePicker alloc]init];
// 设置datePickView的日期格式
datePick.datePickerMode = UIDatePickerModeDate;
datePick.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
// 监听日期改变
[datePick addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
_datePickView = datePick;
}
return _datePickView;
}
// 从XIB拖拽的方式进行创建
- (void)awakeFromNib{
[super awakeFromNib];
// 改写输入框键盘类型
self.inputView = self.datePickView;
// 一开始就有值
[self dateChange:self.datePickView];
}
// 代码的方式进行创建
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
// 改写输入框键盘类型
self.inputView = self.datePickView;
// 一开始就有值
[self dateChange:self.datePickView];
}
return self;
}
// 当UIDatePicker日期改变调动
- (void)dateChange:(UIDatePicker *)datePick{
// 给当前的文本框赋值
// 获取当前选中的日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
//把当前日期转化为字符串
self.text = [dateFormatter stringFromDate:datePick.date];
}
@end
直接引入头文件#import "YYBirthdayTextField.h"
使用即可 或者指定UITextField的类型即可(XIB)
效果图
日期选择TF.png
网友评论