在文本字段点击上显示datepicker

lol*_*lol 21 xcode uidatepicker uitextfield ios

我对iOS很陌生,所以很明显我在尝试按照这个解决方案时缺少一些概念显示datepicker在文本字段上点击 我的问题.

我在一个名为DatepickerAppDelegate的类中有接口和实现,但我在这里丢失了:

"在XIB中,拉出一个UIToolbar和一个UIDatePicker,但不要将它附加到视图.适当地连接插座.dateChanged:响应日期选择器和doneEditing的变化:当工具栏中的完成按钮是点击.连接它们.方法如下所示."

我读了一些关于XIB的东西,但我正在使用故事板,所以我想我没有.此外,我不确定如何在不将其附加到视图控制器的情况下拉出元素(我正在尝试,但是当我释放鼠标按钮时,工具会飞回工具栏),我不知道甚至理解为什么我需要一个UIToolbar.

最后,如何将文本字段连接到datepicker委托?

有人能帮我吗?

更新:

事实上它很简单,我只需要:

datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];

self.birthday.inputView = datePicker;
Run Code Online (Sandbox Code Playgroud)

Dav*_*ong 52

UIResponder,UITextField继承,定义一个名为的属性inputView.此属性(a UIView *)可以定义在成为第一个响应者时将显示的视图而不是键盘UIResponder.

因此,如果您希望UIDatePicker在点击textField时出现(即,您将该textField作为第一个响应者),那么您可以说,天真地:

UIDatePicker *datePicker = [[UIDatePicker alloc] init...];
... configure datePicker ...

[myTextField setInputView:datePicker];
Run Code Online (Sandbox Code Playgroud)

现在,当你UITextField被点击时,UIDatePicker将会提出一个.

然而

你需要做的不仅仅是这个,因为你需要处理不同的方向和不同的习语.

但那是基本的想法.

(如果你想要一个工具栏UIDatePicker,那就是这个inputAccessoryView属性的用途......)


iAn*_*kit 21

ViewController.m的viewDidLoad中

- (void)viewDidLoad {
    [super viewDidLoad];

    UIDatePicker *datePicker = [[UIDatePicker alloc]init];
    [datePicker setDate:[NSDate date]];
    datePicker.datePickerMode = UIDatePickerModeDate;
    [datePicker addTarget:self action:@selector(dateTextField:) forControlEvents:UIControlEventValueChanged];
    [txtFieldBranchYear setInputView:datePicker];
}
Run Code Online (Sandbox Code Playgroud)

在ViewController中添加一个方法

-(void) dateTextField:(id)sender
{
    UIDatePicker *picker = (UIDatePicker*)txtFieldBranchYear.inputView;
    [picker setMaximumDate:[NSDate date]];
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    NSDate *eventDate = picker.date;
    [dateFormat setDateFormat:@"dd/MM/yyyy"];

    NSString *dateString = [dateFormat stringFromDate:eventDate];
    txtFieldBranchYear.text = [NSString stringWithFormat:@"%@",dateString];
}
Run Code Online (Sandbox Code Playgroud)

txtFieldBranchYear 是UITextField的出口