2015-07-16 4 views
0

У меня проблема с выбором даты. Когда я касаюсь текстового поля (datumletu), я вызываю picker и datumletu [уходит в отставку firstresponder]. Но никакого эффекта. Вот мой код. Я пытаюсь все, но ничего не работает.Отказ от первого ответчика не работает, когда отображается сборщик

-(void)textFieldDidBeginEditing:(UITextField *)textField {  
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 

if (textField == self.datumLetu) { 
    [self.view endEditing:YES]; 
    [self.autoTextFieldPriletu resignFirstResponder]; 
    [self.autoTextField resignFirstResponder]; 
    [self.cisloLetu resignFirstResponder]; 

    [self.datumLetu resignFirstResponder]; 
    self.picker.hidden = YES; 
    [self showPicker]; 

    CGRect rect = self.view.frame; 

    if(rect.origin.y == 0) 
    { 
     rect.origin.y -= 110; 
     rect.size.height += 110; 
     [UIView animateWithDuration:0.2 animations:^{ 
      self.view.frame = rect; 
     }]; 
     self.picker.frame = CGRectMake(0, screenHeight/2 + screenHeight/3.2, screenWidth, screenHeight/2); 

    } 

и сборщика

-(void)showPicker 
{ 
    [self showAction]; 
} 
-(void) showAction 
{ 
CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 
    self.picker = [[Picker alloc] initWithFrame:CGRectMake(0, screenHeight/2 + screenHeight/10.5, screenWidth, screenHeight/2)]; 
[self.picker addTargetForDoneButton:self action:@selector(cancelPressed)]; 
[self.picker addTargetForCancelButton:self action:@selector(cancelPressed)]; 

[self.picker setMode:UIDatePickerModeDateAndTime]; 
[self.picker.picker addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged]; 
[self.view addSubview:self.picker]; 
self.picker.hidden = NO; 

} 

enter image description here

Любая помощь высоко ценится.

+0

Я был аналогичная проблема, не знаю если это представляет интерес. Наверное, слишком поздно для вас в любом случае. Проблема у меня была: я представил сборщика, и в процессе представления сборщика я попытался уйти в отставку первым ответчиком. Это не сработало. Я обнаружил, что должен был уволить первого ответчика * перед тем, как начать процесс представления сборщика. –

ответ

0

В вашем ViewController добавить делегат UITextField:

@interface ViewController : UIViewController <UITextFieldDelegate> 

При создании UITextField или в ViewDidLoad:

self.myTextField.delegate = self; 

В файле реализации:

#pragma mark - UITextFieldDelegate 

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 

    // show your picker here 

} 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    return NO; 
} 
+0

Благодарим вас за ответ. Тем не менее. – ankmara

Смежные вопросы