美文网首页
选择生日(重新 UITextField)

选择生日(重新 UITextField)

作者: 努力奔跑的小男孩 | 来源:发表于2017-10-12 11:36 被阅读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

    相关文章

      网友评论

          本文标题:选择生日(重新 UITextField)

          本文链接:https://www.haomeiwen.com/subject/khmnyxtx.html