重新UITextField定制成自己需要的,什么時(shí)候需要生日,日期選擇等情況下,直接引入頭文件就可以使用,非常的方便。
在使用之前首先要對(duì)UITextField的代理方法進(jìn)行設(shè)置,目的是:讓輸入框只能選擇不能認(rèn)為輸入
(1)遵守 <UITextFieldDelegate> 代理
(2)指定代理 self.birthdayTextF.delegate = self;
(3)修改代理方法
// 是否允許文本框的內(nèi)容(no/false 攔截用書(shū)輸入 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];
// 設(shè)置datePickView的日期格式
datePick.datePickerMode = UIDatePickerModeDate;
datePick.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
// 監(jiān)聽(tīng)日期改變
[datePick addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];
_datePickView = datePick;
}
return _datePickView;
}
// 從XIB拖拽的方式進(jìn)行創(chuàng)建
- (void)awakeFromNib{
[super awakeFromNib];
// 改寫輸入框鍵盤類型
self.inputView = self.datePickView;
// 一開(kāi)始就有值
[self dateChange:self.datePickView];
}
// 代碼的方式進(jìn)行創(chuàng)建
- (instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
// 改寫輸入框鍵盤類型
self.inputView = self.datePickView;
// 一開(kāi)始就有值
[self dateChange:self.datePickView];
}
return self;
}
// 當(dāng)UIDatePicker日期改變調(diào)動(dòng)
- (void)dateChange:(UIDatePicker *)datePick{
// 給當(dāng)前的文本框賦值
// 獲取當(dāng)前選中的日期
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.dateFormat = @"yyyy-MM-dd";
//把當(dāng)前日期轉(zhuǎn)化為字符串
self.text = [dateFormatter stringFromDate:datePick.date];
}
@end
直接引入頭文件#import "YYBirthdayTextField.h"
使用即可 或者指定UITextField的類型即可(XIB)
效果圖
日期選擇TF.png