it-swarm.com.ru

iPhone датапикер вместо клавиатуры?

Как бы Вы это сделали?

У меня есть форма с UITextField. Когда я нажимаю на него, я хотел бы отобразить UIDatePicker вместо клавиатуры по умолчанию, которая появляется по умолчанию? Обратите внимание, что в моей форме есть и другие элементы.

34
xpepermint

Я думаю, что это более официальный способ сделать это:

UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease];
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
datePicker.tag = indexPath.row;
textField.inputView = datePicker;
86
Johan Kool

в .ч

UIDatePicker *datePicker;
NSDate *date;
UIToolbar *keyboardToolbar;

в ViewDidLoad:

if (keyboardToolbar == nil) {
    keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
    [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];

    UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

    UIBarButtonItem *accept = [[UIBarButtonItem alloc] initWithTitle:@"Accept" style:UIBarButtonItemStyleDone target:self action:@selector(closeKeyboard:)];

    [keyboardToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, accept, nil]];
}

self.txtDate.inputAccessoryView = keyboardToolbar;

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

self.txtDate.inputView = datePicker;


- (void)datePickerValueChanged:(id)sender{

date = datePicker.date;

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd/MM/YYYY"];


[self.txtDate setText:[df stringFromDate:date]];
}

в раскадровке добавить в txtDate -> EditingDidEnd

- (IBAction)establishHour:(id)sender{

hour = hourPicker.date;

NSDateFormatter *hf = [[NSDateFormatter alloc] init];
[hf setDateFormat:@"HH:MM"];

[self.txtHour setText:[hf stringFromDate:hour]];

}

Устанавливает клавиатуру как DatePicker и создает панель инструментов с кнопкой для подтверждения выбора.

8
user1617027

Я преобразовал ответ Йохана Кула в Свифт, если кому-то понравится. Я поместил код в viewDidLoad.

let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.Date
datePicker.addTarget(self, action: "datePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
textField.inputView = datePicker
4
Jeremiah
(IBAction)estableceHora:(id)sender{
   Hora = horaPicker.date;
   NSDateFormatter *hf = [[NSDateFormatter alloc] init];
   [hf setDateFormat:@"HH:MM"];
   [self.txtHora setText:[hf stringFromDate:Hora]];
}
0
sumit sanadhya