Question

J'ai un uitextfield dans une vue paysagère, et lorsque j'appuie sur le bouton «Reliver le clavier» en bas à droite de la vue Uikeyboard, le clavier ne disparaît pas. Existe-t-il un moyen d'écouter par programme lorsque cette touche a été enfoncée? Ou y a-t-il une connexion que je ne vois pas qui fera disparaître ce clavier? Ceci est iOS 4 et Xcode 4. Merci.

Était-ce utile?

La solution

J'ai eu le même problème aujourd'hui et je me suis demandé, cela fonctionne dans l'exemple de code de clavier Accessory d'Apple. J'ai donc fait l'ingénierie inversée. Le ViewController n'était pas l'erreur que j'ai commise dans mon cas.

Dans la mise en œuvre d'UIApplicationDelegate, il y a le point d'entrée de l'application, où Root ViewController et Window seront configurés - (void) applicationDidFinishLaunching:(UIApplication *)application. Si vous avez oublié d'ajouter la vue Root ViewControllers à Window en tant que SubView, le bouton de licenciement ne fonctionnerait en aucune façon de votre application.

@class ViewController;

@interface KeyboardAccessoryAppDelegate : NSObject <UIApplicationDelegate> {
  UIWindow *window;
  ViewController *viewController;
}

  @property (nonatomic, retain) IBOutlet UIWindow *window;
  @property (nonatomic, retain) IBOutlet ViewController *viewController;

@end

...

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

  [window addSubview:viewController.view];
  [window makeKeyAndVisible];
}

N'oubliez pas de configurer les points de vente dans le fichier XIB principal.

Je ne sais pas pourquoi cela est lié au comportement des claviers. Mais ma théorie est que la chaîne de répondeurs n'est pas liée à la fenêtre, mais elle en a besoin.

Autres conseils

Pour rejeter le clavier à l'aide du bouton de clavier de rejet, vous devez implémenter la méthode du délégué

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //Check if your text field is first responder, and if it is, have it resign
}

Alternativement, si vous souhaitez rejeter le clavier en tapant à l'extérieur, utilisez

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UIView* view in self.view.subviews)
    {
        if ([view isKindOfClass:[UITextField class]]) {
            [view resignFirstResponder];
        }

        if ([view isKindOfClass:[UITextView class]]) {
            [view resignFirstResponder];
        }
    }
}

Vous devez dire au champ de texte qui accepte l'entrée du clavier pour ne plus être le premier répondeur.

[UITextField resignFirstRepsonder];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top