2014-09-13 1 views
1

J'ai une zone de texte dans un TableView et quand l'utilisateur sélectionne un commutateur il apparaît (devient visible) et un clavier apparaît, et quand l'utilisateur éteint le commutateur la TextBox disparaît et le clavier cache. Pendant le temps où le clavier apparaît et disparaît, je veux déplacer la table légèrement vers le haut et ensuite revenir à la position d'origine. Voici le codeContentInsets ne fonctionne pas pour UITableView

-(IBAction)actionSwitch:(id)sender 
{ 
isSearchTerm = [switchSearchTerm isOn]; 
[self.tableView reloadData]; 
if(isSearchTerm == YES) 
{ 
    [txtSearchTerm becomeFirstResponder]; 
    floatBottom = self.tableView.contentInset.bottom; 

    self.tableView.contentInset=UIEdgeInsetsMake(0,0,200,0); 
    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForSelectedRow] atScrollPosition:UITableViewScrollPositionTop animated:YES]; 
} 
else 
{ 
    [txtSearchTerm resignFirstResponder]; 
    self.tableView.contentInset=UIEdgeInsetsMake(0,0,floatBottom,0); 
    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForSelectedRow] atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
} 
} 

La partie else ne ramène pas la tableview à sa position d'origine, merci de nous aider.

Répondre

1

J'ai résolu ceci en définissant la propriété étendre sous la barre supérieure à NO, sous propriétés de contrôleurs de vue dans l'inspecteur des propriétés en sélectionnant le ViewController.

2

Si votre tableView se trouve dans un contrôleur de navigation ou le rootViewController d'un contrôleur de navigation et que vous effectuez tout cela sur iOS7 + avec la propriété automaticallyAdjustsScrollViewInsets définie sur YES. Vous feriez mieux de gérer le clavier apparaître comme le document suggéré

// Call this method somewhere in your view controller setup code. 
- (void)registerForKeyboardNotifications 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(keyboardWasShown:) 
      name:UIKeyboardDidShowNotification object:nil]; 

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

} 

// Called when the UIKeyboardDidShowNotification is sent. 
- (void)keyboardWasShown:(NSNotification*)aNotification 
{ 
    NSDictionary* info = [aNotification userInfo]; 
    CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 

    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 

    // If active text field is hidden by keyboard, scroll it so it's visible 
    // Your app might not need or want this behavior. 
    CGRect aRect = self.view.frame; 
    aRect.size.height -= kbSize.height; 
    if (!CGRectContainsPoint(aRect, activeField.frame.origin)) { 
     [self.scrollView scrollRectToVisible:activeField.frame animated:YES]; 
    } 
} 

// Called when the UIKeyboardWillHideNotification is sent 
- (void)keyboardWillBeHidden:(NSNotification*)aNotification 
{ 
    UIEdgeInsets contentInsets = UIEdgeInsetsZero; 
    scrollView.contentInset = contentInsets; 
    scrollView.scrollIndicatorInsets = contentInsets; 
} 

Il existe une autre façon de procéder. Les deux peuvent être trouvés dans "Déplacer le contenu qui est situé sous le clavier" "Guide de programmation de texte pour iOS"

+0

Je pense que ce que votre code fait est effectivement la même chose et, en fin de compte, fonctionne de la même façon, comme le mien, une fois que la vue de table déplacée ne descend pas. –

+0

a résolu cela en désactivant l'extension sous la propriété de barre supérieure dans les propriétés ViewControllers. Merci quand même –

Questions connexes