Tableview scroll au footerView

TerflogagTerflogag Membre
mai 2016 modifié dans API UIKit #1

Bonjour à  tous,


 


Je cherche un moyen de faire scroll mon tableview au niveau de son footer lorsque l'utilisateur saisie du texte dans l'une des cellules. En effet, lors de la saisir d'un texte dans une cellule, le scroll s'ajuste automatiquement en dessous de la cellule en question. Je souhaiterai que le scroll soit jusqu'au bas du footerView, de façon a ne pas cacher le bouton qui est présent dans le footerView.


 


J'ai testé cela : 



    func textFieldDidBeginEditing(textField: UITextField) {
        self.tableView.scrollRectToVisible(self.tableView?.tableFooterView?.frame , animated: true)
    }

Cela ne fait rien (meme avec un scroll to top a cet endroit, cela n'est pas pris en compte).


J'ai également testé dans textFieldShouldBeginEditing (qui est pourtant bien exécuté également).


 


Une idée pour réaliser cela ?


 


Bonne journée 


Réponses

  • FKDEVFKDEV Membre
    Je pense qu'il faut gérer les notifications clavier (ex: UIKeyboardDidShowNotification).

    Lis ce document:
    https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

    extrait :

    Adjusting your content typically involves temporarily resizing one or more views and positioning them so that the text object remains visible. The simplest way to manage text objects with the keyboard is to embed them inside a UIScrollView object (or one of its subclasses like UITableView). When the keyboard is displayed, all you have to do is reset the content area of the scroll view and scroll the desired text object into position. Thus, in response to a UIKeyboardDidShowNotification, your handler method would do the following:

    - Get the size of the keyboard.

    - Adjust the bottom content inset of your scroll view by the keyboard height.

    - Scroll the target text field into view.

  • colas_colas_ Membre

    Peut-être que ton scroll ne marche pas parce qu'il est déjà  arrivé en bas de la TableView, il ne peut pas descendre plus bas ?


     


    Du coup, il faudrait remonter le bas de TableView carrément ? À voir...


  • Finalement j'ai trouvé une solution, un peu bizarre qui convient parfaitement ! 



    extension UITableView {
        func scrollToBottom(animated: Bool) {
            let SCREEN_HEIGHT = UIScreen.mainScreen().bounds.height
            var y: CGFloat = 0.0
            let footerHeight: CGFloat = 120
            if self.contentSize.height > SCREEN_HEIGHT {
                y = self.contentSize.height - SCREEN_HEIGHT
            }
            self.setContentOffset(CGPointMake(0, y + footerHeight), animated: animated)
        }
    }

    La solution ne vient pas de moi, je l'ai trouvé sur le net :-) 


     


    Bonne soirée 


  • CéroceCéroce Membre, Modérateur
    C'est quand même une solution pleine d'inconvénients et mal écrite.
    Elle ne fonctionne pas si la table view ne prend pas toute la hauteur.
    Que se passe-t-il quand on utilise le split view sur iPad?
Connectez-vous ou Inscrivez-vous pour répondre.