UITextField自定義鍵盤

UITextField有一個inputView的屬性,可以通過給inputView賦值的方法給UITextField定制鍵盤。如下圖所示,我們可以通過給UITextField自定義鍵盤,使它的輸入控件為時間選擇器:

123.png

實(shí)現(xiàn)過程如下:
首先,自定義一個繼承自UITextField的類:

@interface BirthdayField : UITextField

@end

然后,我們初始化它的時候,給它指定一個inputView:


-(void)initTextValue
{
    [self valueChange:self.datePicker];
}

-(instancetype)initWithFrame:(CGRect)frame
{
    if(self == [super initWithFrame:frame])
    {
        [self initView];
    }
    
    return self;
}
-(void)awakeFromNib
{
    [super awakeFromNib];
    [self initView];
}

-(void)initView
{
    UIDatePicker *date = [[UIDatePicker alloc]init];
    //日期格式
    date.datePickerMode = UIDatePickerModeDate;
    //中國
    date.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];
    [date addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];
    self.datePicker = date;
    self.inputView = date;
}

-(void)valueChange:(UIDatePicker *)sender
{
    NSLog(@"%@",sender.date);
    NSDateFormatter *format = [[NSDateFormatter alloc]init];
    format.dateFormat = @"yyyy-MM-dd";
    self.text = [format stringFromDate:sender.date];
}

其次,調(diào)用的時候,我們可能不想讓自定義的TextField中有用戶通過其他鍵盤輸入的內(nèi)容,需要在它的代理方法中返回NO:

//是否允許用戶自己輸入
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"%s",__func__);
    return NO;
}

最后,我們可能需要在TextField剛獲得焦點(diǎn)的時候給它一個默認(rèn)值。這個時候,我們就需要寫一個設(shè)置默認(rèn)值的方法,并在代理方法-(void)textFieldDidBeginEditing: 中調(diào)用:

@interface BirthdayField : UITextField

-(void)initTextValue;

@end
-(void)initTextValue
{
    [self valueChange:self.datePicker];
}
-(void)textFieldDidBeginEditing:(id )textField
{
    if([textField respondsToSelector:@selector(initTextValue)])
    {
        [textField initTextValue];
    }  
}

附上demo地址:demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容