簡體   English   中英

UIDatePicker設置UITextfield文本

[英]UIDatePicker to set UITextfield text

我有一個UITextField和一個UIDatePicker ,我想用它們來設置用戶的生日。

我在viewDidLoad使用以下代碼:

UIDatePicker *datePicker = [[UIDatePicker alloc] init];
birtdayTextField.inputView = datePicker;

但是我有兩個問題。 我在情節UIDatePicker中的視圖中放置了一個UIDatePicker 但它仍然會打開一個新的datepicker ,即使我已經連接*datepickerUIDatePicker

而且它也不會將datepicker的信息添加到textfield

輸入視圖不起作用。 您可以創建惰性UIDatePicker

- (UIDatePicker *)bDatePicker {
    if (!_bDatePicker) {
        _bDatePicker = [UIDatePicker new];
        _bDatePicker.datePickerMode = UIDatePickerModeDate;
        [_bDatePicker addTarget:self action:@selector(datePickerDidChangeDate:) forControlEvents:UIControlEventValueChanged];
    }
    return _bDatePicker;
}

然后像下面這樣設置:

self.birtdayTextField.inputView = self.bDatePicker;

這是回調:

- (void)datePickerDidChangeDate:(UIDatePicker *)sender {
    self.birtdayTextField.text = [self.bDateFormatter stringFromDate:sender.date];
}

可能的格式化程序:

- (NSDateFormatter *)bDateFormatter {
    if (!_bDateFormatter) {
        _bDateFormatter = [NSDateFormatter new];
        _bDateFormatter.dateFormat = @"dd.MM.yyyy";
    }
    return _bDateFormatter;
}

為了防止將錯誤的數據粘貼到該文本字段,您可以使用它的delegate

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    return textField != self.birtdayTextField;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM