2016-07-27 6 views
0

Когда вы нажимаете на текстовое поле в ячейке, откройте клавиатуру и прокрутите таблицу.Как установить положение прокрутки UITableView в предыдущее положение в ios

textFieldShouldReturn: call then tableview set Предыдущая позиция. Как я могу это сделать?

Мой Tableview Scroll Код

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    CGPoint point = [textField.superview convertPoint:textField.frame.origin toView:tblemailconfiguration]; 
    CGPoint contentOffset = tblemailconfiguration.contentOffset; 
    contentOffset.y += (point.y - contentOffset.y - self.navigationController.navigationBar.frame.size.height); // Adjust this value as you need 
    [tblemailconfiguration setContentOffset:contentOffset animated:YES]; 

    return YES; 
} 
+0

Быстрое решение может быть помните 'contentOffset.y' в другой глобальной переменной и установите 'tblemailconfiguration' для сохранения contentOffset в делегате' textFieldShouldReturn'. –

+0

Укажите код? –

+0

Хорошо, я добавил ответ. –

ответ

0

Просто сделайте, как показано ниже:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    CGPoint point = [textField.superview convertPoint:textField.frame.origin toView:tblemailconfiguration]; 
    CGPoint contentOffset = tblemailconfiguration.contentOffset; 
    // Record the tableview's content offset when editing begin 
    lastContentOffset = contentOffset; 
    contentOffset.y += (point.y - contentOffset.y - self.navigationController.navigationBar.frame.size.height); // Adjust this value as you need 
    [tblemailconfiguration setContentOffset:contentOffset animated:YES]; 

    return YES; 
} 


- (void)textFieldDidEndEditing:(UITextField *)textField { 
    // When editing reach end, just set tableview's content offset to last. 
    [tblemailconfiguration setContentOffset:lastContentOffset animated:YES]; 
} 
+0

Right Ans Zylenv –

+0

@AvinashVaghasiya: Отметьте это как принятое, отметив зеленую галочку, если она решила проблему. –

0

Добавить наблюдателей в viewWillAppear

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardDidHideNotification object:nil]; 

Удалить наблюдателя в viewWillDisappear

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; 
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; 

Теперь добавьте эти методы в контроллере представления

#pragma mark - keyboard Hide Show 



-(void) keyboardWasShown:(NSNotification *)notification 
    { 
     //Manages scrollview content on keyboard hide show 
     NSDictionary *info = [notification userInfo]; 
     NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; 
     CGRect keyboardFrame = [kbFrame CGRectValue]; 
     CGFloat height = keyboardFrame.size.height; 

     [_scrollView setContentInset:UIEdgeInsetsMake(0, 0, height, 0)]; 
     [_scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, height, 0)]; 

    } 
    - (void) keyboardWillBeHidden:(NSNotification *)notification 
    { 
     //Manages scrollview content on keyboard hide show 
     UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3f]; 
     [_scrollView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
     [_scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 


     [UIView commitAnimations]; 
    } 

    #pragma mark - Textfield Delegate Methods - 

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

     CGRect r = [textField convertRect:textField.frame toView:_scrollView]; 
     [self.scrollView scrollRectToVisible:r animated:YES]; 
    } 
0

Я предлагаю запись indexPath перед открытым клавиатуры используйте UITableView:scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated в textFieldShouldReturn:

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