Как переместить представление вверх при нажатии на UITextField в CustomCell UITableview?

У меня есть TextField в настраиваемой ячейке UITableview. My Tableview находится в нижней части MainView, поэтому, когда я нажимаю на TextField в CustomCell, появляется клавиатура, которая скрывает мое текстовое поле. Мое изображение ниже показывает мою проблему

введите описание изображения здесь

Здесь у меня есть код, который работает, когда у меня есть UITextField в MainView. Пожалуйста, отредактируйте приведенный ниже код, потому что я хочу анимацию всего просмотра, когда я нажимаю на UITextfield.

-(void)textFieldDidBeginEditing:(UITextField *)textField {

if (textField.tag > 0) {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y-165.0,
                                 self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}   

   }
 -(void)textresign{

[[self.view viewWithTag:1]resignFirstResponder];
   }
-(void)textFieldDidEndEditing:(UITextField *)textField {         
if (textField.tag > 0) {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:YES];
    self.view .frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+165.0,
                                  self.view.frame.size.width, self.view.frame.size.height);
    [UIView commitAnimations];
}   

  }

Но я не знал, как исправить это для моей пользовательской ячейки UITextField. Любая помощь будет приложена.


person jamil    schedule 12.11.2012    source источник


Ответы (1)


вот код, просто нужно немного изменить код

-(void)textFieldDidBeginEditing:(UITextField *)textField
{

    if (textField.tag > 0)
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y-165.0,
                                     self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];
    }
}

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

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

    if (textField.tag > 0)
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDelegate:self];
        [UIView setAnimationDuration:0.5];
        [UIView setAnimationBeginsFromCurrentState:YES];
        self.view .frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+165.0,
                                      self.view.frame.size.width, self.view.frame.size.height);
        [UIView commitAnimations];

    }
    [textField resignFirstResponder];
    return YES;
}

используя метод ниже, обязательно установить делегата в текстовое поле.

Я надеюсь, что ты сможешь найти решение.

person Kamar Shad    schedule 12.11.2012
comment
спасибо, он работает, но вид никогда не падает после подъема. - person jamil; 12.11.2012
comment
@SHAZAD отладите и проверьте этот textFieldShouldReturn метод, получаете ли вы какой-либо вызов этого метода всякий раз, когда пытаетесь отказаться от клавиатуры. - person Kamar Shad; 12.11.2012