选择生日(重新 UITextField)

2017-10-12  本文已影响4人  努力奔跑的小男孩

重新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
上一篇 下一篇

猜你喜欢

热点阅读