Xcode/iOS5: Показване на UIDatePicker при натискане на UITextField (+ скриване на клавиатурата по подразбиране)

Бих искал да извикам UIDatePicker само когато UITextField е активен. Когато датата е избрана, тя трябва да се показва в същото UITextField.

Дори не знам как да се обадя на Picker.

може ли някой да ми помогне


person filou    schedule 12.11.2011    source източник


Отговори (2)


има метод на делегат, наречен

-(void)textFieldDidBeginEditing:(UITextField*)textField
{
[textField resignFirstResponder];
 in this you have to do this
pick = [[UIDatePicker alloc] init];
[pick setFrame:CGRectMake(0,200,320,120)];
[pick addTarget:self action:@selector(done) forControlEvents:UIControlEventValueChanged]
[self.view addSubview:pick];
}

in

-(void)done
{
[textfield setText:pick.date];
}

пуснете избора в dealloc

person Tendulkar    schedule 12.11.2011
comment
Не забравяйте да пуснете мотика. - person jbat100; 12.11.2011
comment
Благодаря ти Хитман. Но получавам грешката: Използване на недеклариран идентификатор „избор“. - person filou; 12.11.2011
comment
UIDatePicker *pick запишете това в .h файла - person Tendulkar; 12.11.2011
comment
Добре. Но сега в -(void)done е грешка: Несъвместими типове указатели изпращат „NSDate *“ към параметър от тип „NSString *“. - person filou; 12.11.2011
comment
Вземете NSDateFormatter, като използвате това, можете да конвертирате NSDate в NSString. - person Tendulkar; 14.11.2011

За да добавя към отговора на Hitman, мисля, че трябва да внедрите

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

вместо това и върнете НЕ. След това покажете инструмента за избор на дата и попълнете текста на UITextField според избора на инструмента за избор.

person jbat100    schedule 12.11.2011
comment
Благодаря jbat :) Но получавам грешката: Използване на недеклариран идентификатор 'pick'. - person filou; 12.11.2011
comment
Просто създайте ivar (променлива на екземпляр), декларирайки избора (UIDatePicker* pick;) във вашия хедър (и направете свойство за запазване). По този начин можете да запазите препратка към него, за да го премахнете от изгледа, когато потребителят приключи. - person jbat100; 12.11.2011
comment
Добре. Но сега в -(void)done е грешка: Несъвместими типове указатели изпращат „NSDate *“ към параметър от тип „NSString *“. - person filou; 12.11.2011
comment
Трябва да конвертирате NSDate (pick.date) в низ (с помощта на NSDateFormatter), след което да присвоите този низ на textfield.text. - person jbat100; 12.11.2011
comment
Опитах го преди: инструментът за избор се появява сега на всяко текстово поле и вече не изчезва.. - person filou; 12.11.2011
comment
след това го премахнете от изгледа ([изберете removeFromSuperview]). - person jbat100; 12.11.2011