Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion de vue et keyboard IOS

Sujet résolu
    31 octobre 2014 à 14:51:45

    Salut à tous,

    dans un scrollview j'ai plusieurs textfields (certains en haut et d'autres en bas de la vue) et j'aimerais lorsque le keyboard apparait que le textfield placé vers le bas ne soit pas caché par celui-ci. Voici mon code:

    #define kOFFSET_FOR_KEYBOARD 80.0
    
    -(void)keyboardWillShow {
        if (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
        else if (self.view.frame.origin.y < 0)
        {
            [self setViewMovedUp:NO];
        }
    }
    
    -(void)keyboardWillHide {
        if (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
        else if (self.view.frame.origin.y < 0)
        {
            [self setViewMovedUp:NO];
        }
    }
    
    -(void)textFieldDidBeginEditing:(UITextField *)textField
    {
        if ( ( textField != MyTextField )  )
        {
            if  (self.view.frame.origin.y >= 0)
            {
                [self setViewMovedUp:YES];
            }
        }
    }
    
    -(void)setViewMovedUp:(BOOL)movedUp
    {
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration:0.3]; 
        
        CGRect rect = self.view.frame;
        if (movedUp)
        {   rect.origin.y -= kOFFSET_FOR_KEYBOARD;
            rect.size.height += kOFFSET_FOR_KEYBOARD;
        }
        else
        {
            rect.origin.y += kOFFSET_FOR_KEYBOARD;
            rect.size.height -= kOFFSET_FOR_KEYBOARD;
        }
        self.view.frame = rect;
        
        [UIView commitAnimations];
    }
    
    
    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillShow)
                                                     name:UIKeyboardWillShowNotification
                                                   object:nil];
        
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillHide)
                                                     name:UIKeyboardWillHideNotification
                                                   object:nil];
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:UIKeyboardWillShowNotification
                                                      object:nil];
        
        [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:UIKeyboardWillHideNotification
                                                      object:nil];
    }
    

    La vue se déplace bien vers le haut, cependant le mouvement est activé pour chaque textfield alors que j'en aurais besoin que pour un seul.

    Vous avez des idées?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      1 novembre 2014 à 1:13:57

      Tu peux mettre des tags sur tes textfields, et vérifier sur quel textfield tu as cliqué (j'ai pas essayé, mais voici un lien qui montre un exemple)
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2014 à 22:45:10

        Merci

        Je ne cache pas que je n'ai jamais utilisé de tags je vais me pencher dessus ;)

        • Partager sur Facebook
        • Partager sur Twitter
          3 novembre 2014 à 16:55:04

          Problème très courant en iOS

          J'utilise la librairie IQKeyboardManager pour résoudre ce problème :)

          • Partager sur Facebook
          • Partager sur Twitter
          Vous pouvez retrouver mes tutos sur : http://www.tutos-android-france.com/
            3 novembre 2014 à 20:25:16

            Merci Florent 

            Cela à l'air parfait!!! par contre je n'arrive pas à récupérer à faire marcher la library… 

            J'ai suivi les instructions sur github mais rien...

            -
            Edité par pierto 3 novembre 2014 à 23:31:23

            • Partager sur Facebook
            • Partager sur Twitter
              4 novembre 2014 à 1:04:21

              Voici le message qui est apparu … ld: warning: ignoring file /Users/Desktop/premiere app/projet - copie/IQKeyboardManager-master/IQKeyboardManagerFramework/KeyboardManager.framework/KeyboardManager, missing required architecture x86_64 in file /Users/Desktop/premiere app/projet - copie/IQKeyboardManager-master/IQKeyboardManagerFramework/KeyboardManager.framework/KeyboardManager (2 slices)
              • Partager sur Facebook
              • Partager sur Twitter
                5 novembre 2014 à 11:09:01

                C'est ok

                je suis passé par le code source... 

                Encore merci

                • Partager sur Facebook
                • Partager sur Twitter
                  7 novembre 2014 à 15:36:36

                  Sinon importe la via Pods

                  installe http://cocoapods.org/

                  et fait 

                  pod 'IQKeyboardManager'

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Vous pouvez retrouver mes tutos sur : http://www.tutos-android-france.com/

                  Gestion de vue et keyboard IOS

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown