Вывести на передний план DatePicker на UITextField - PullRequest
1 голос
/ 08 июня 2010

Когда UITextField имеет значение firstResponder, Я хотел бы вывести на передний план UIDatePicker (нижняя часть экрана) без «падающей клавиатуры» (без вызова UITextField resignFirstResponder).

Цель состоит в том, чтобы обрабатывать как UIKeyboard UITextField, который всплывает практически на все, когда он становитсяFirstResponder.Кажется, что modalViewController работает только в полноэкранном режиме.


- showDatePicker:(id)sender {
    if([taskName isFirstResponder]) [taskName resignFirstResponder];
    [self.view.window addSubview: self.pickerView];

    // size up the picker view and compute the start/end frame origin
    (...)
    [UIView commitAnimations];

}

В этом примере показано, как клавиатура движется вниз, а DatePicker идет вверх, сзади, а не впереди.

Знаете ли вы решение?Кусок кода будет приветствоваться.Заранее спасибо.

Ответы [ 2 ]

8 голосов
/ 01 декабря 2011

Это просто сделать, установив вид ввода текстового поля в окно выбора. Затем при редактировании началось указание представителю выбора стать первым респондентом. Как это

textField.inputView = pickerView

затем с использованием IBAction, вызываемого, когда редактирование началось

-(IBAction) setPickerViewAsFirstResponder:(id)sender
{
    [pickerView becomeFirstResponder];
}

Это отлично работает. Вам нужно будет реализовать код, чтобы фактически установить то, что в настоящее время отображается в окне выбора, как строку в текстовом поле.

2 голосов
/ 09 февраля 2011

Это определенно можно сделать ... просто реализуйте метод ниже после установки UIViewController <UITextFieldDelegate> в вашем .h

Короче говоря, это отменяет загрузку клавиатуры перед началом редактирования текста.

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    // Make a new view, or do what you want here
    UIDatePicker *pv = [[UIDatePicker alloc] initWithFrame:CGRectMake(0,245,0,0)];
    [self.view addSubview:pv];
    return NO;  
}
...