скрыть клавиатуру текстового поля и отобразить указатель даты - PullRequest
2 голосов
/ 10 ноября 2009

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

Ответы [ 6 ]

3 голосов
/ 10 декабря 2009

Я боролся с этим сам и нашел решение. Вы можете сделать это так:

- (void)viewDidLoad 
{
    [super viewDidLoad];
// set delegate for date text field
    dateField.delegate = self;
}

// Display the picker instead of a keyboard
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    [self showDatePicker];
    return NO;

}

Предполагается, что вы объявили метод showDatePicker, который обрабатывает отображение UIPicker.

2 голосов
/ 10 ноября 2009

Звучит так, будто вместо стандартной клавиатуры вы хотите показать свой собственный вид выбора даты. Я считаю, что вы можете справиться с этим, установив делегат для вашего текстового поля, затем предоставив textFieldShouldBeginEditing.

// в viewWillAppear установить делегат текстового поля, если необходимо

   ...
   myTextField.delegate = self;
   ...

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

        // if date picker not in display, show it here...

        return NO;
    }
1 голос
/ 04 июня 2010
1 голос
/ 10 ноября 2009

Вы можете вызвать [myTextField resignFirsrResponder] для какого-либо метода нажатия кнопки или, например, в методе делегата textFieldShouldReturn. что-то в этом роде

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return YES;
}
0 голосов
/ 28 июня 2013

Теперь вы можете использовать inputView и inputAccessoryView из UITextField. Объявление в файле .h и @synthesize в файле .m.

@property (nonatomic, retain) IBOutlet UIToolbar    *_accessoryView;
@property (nonatomic, retain) IBOutlet UIDatePicker *_datePickerView;

Подключите их к владельцу файла в файле .xib, убедитесь, что он находится вне self.view.

- (void)viewDidLoad
    {   
        _dateOfBirthTextField.inputView = self._datePickerView;
        _dateOfBirthTextField.inputAccessoryView = self._toolbar;
    }

Также напишите функцию для извлечения даты из средства выбора

#pragma mark- UITextField with UIDatePicker-

- (IBAction)dateChanged:(id)sender {
    UIDatePicker *picker = (UIDatePicker *)sender;
    _dateOfBirthTextField.text = [NSString stringWithFormat:@"%@", picker.date];
}

- (IBAction)doneEditing:(id)sender {
    [_dateOfBirthTextField resignFirstResponder];
}

Добавить dateChanged: IBAction для valueChanged: действие _datePicker. and doneEditing: IBAction на кнопке действия панели инструментов.

0 голосов
/ 05 декабря 2012

Очень просто, в viewController.h поместите UITextFieldDelegate. После в viewDidLoad.

 txtFecha.delegate = self;

datePicker = [[UIDatePicker alloc]init];
[datePicker setDatePickerMode:UIDatePickerModeDate];

self.txtFecha.inputView = datePicker;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...