ios - UIDatePicker 设置 UITextfield 文本

标签 ios objective-c uitextfield uidatepicker

我有一个 UITextField 和一个 UIDatePicker,我想用它们来设置用户的生日。

我在 viewDidLoad 中使用这段代码:

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

但是我有两个问题。我在 Storyboard的 View 中放置了一个 UIDatePicker。但它仍然会打开一个新的 datepicker,即使我已经将 *datepicker 连接到 UIDatePicker

而且它也不会将来自 datepicker 的信息添加到 textfield

最佳答案

输入 View 不起作用。您可以创建惰性 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;
}

关于ios - UIDatePicker 设置 UITextfield 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006351/

相关文章:

ios - 如何捕获 func LocationManager 的 GPS 数据?

android - 用于 iOS 和 android 的具有键值存储和用户身份验证的云解决方案

iphone - 调整 UISearchDisplayController 变暗的黑色覆盖层

ios - 如何调整输入附件 View 的大小

ios - 点击标签栏滚动到 UITableViewController 的顶部

ios - iOS 中没有分钟和秒的 UIDateTime Picker

ios - 委托(delegate)函数的顺序在 iOS 中重要吗?

iphone - 如果我不希望它自动隐藏,如何控制 UIMenuController?

ios - 键盘将 UIView 推开

ios - 如何在按下回车键时 swift 隐藏键盘?