2010-12-11 5 views
1

Je suis nouveau sur iphone;désactiver le clavier après avoir entré le texte dans le champ de texte

J'ai créé 10 étiquettes avec les champs de texte correspondants.

Lorsque je clique sur le champ de texte, le clavier est ouvert.

Mais il couvre les 4 champs de texte en bas.

Je ne peux pas entrer de texte dans ces champs.

J'ai besoin lorsque je clique sur le champ de texte en face de l'écran du clavier monte.

maintenant je peux entrer dans ces champs de texte.

Comment puis-je faire cela.

Merci d'avance.

Répondre

1

Comme Jumhyn a écrit, faites le UIViewController le délégué de tous les champs de texte. Puis attribuez les balises de champs de texte de 0 à 9, de haut en bas. Ensuite, mettre en œuvre la méthode suivante dans le contrôleur:

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    self.view.bounds = CGRectOffset(self.view.bounds, 0, textField.tag * 50); 
    [[self.view viewWithTag: textField.tag + 1] becomeFirstResponder]; 
} 

L'idée est que la première ligne se déplace tous les champs de texte jusqu'à, selon le champ texte a été modifié, dans la deuxième ligne vous activez le champ de texte suivant. Vous devrez modifier le code pour mieux adapter votre mise en page, mais cela devrait vous donner l'idée.

+0

Merci q pour la relecture, j'essaye ceci mais aucun changement à ma vue. – MaheshBabu

+0

Consultez cet article pour mieux comprendre la machinerie: http://cocoawithlove.com/2008/10/sliding-uitextfields-around-to-avoid.html – Costique

+0

Je pense que votre code ur est correct je place des noeuds dans la fonction qui sont dans ci-dessus lien. Mais ces fonctions ne sont pas déclenchées. ce que je dois faire pour déclencher ces événements – MaheshBabu

0

Faire le UIViewController qui gère le texte vues par UITextFieldDelegate:

@interface TextFieldViewController : UIViewController <UITextFieldDelegate> { 

puis dans la textFieldShouldBeginEditing: méthode dans le fichier .m, ajoutez le code qui déplace les champs de texte vers le haut. Par exemple:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    myTextField3.frame = CGRectMake(myTextField3.frame.origin.x, myTextField3.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField3.frame.size.width, myTextField3.frame.size.height); 

    myTextField4.frame = CGRectMake(myTextField4.frame.origin.x, myTextField4.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField4.frame.size.width, myTextField4.frame.size.height); 

    myTextField5.frame = CGRectMake(myTextField5.frame.origin.x, myTextField5.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField5.frame.size.width, myTextField5.frame.size.height); 

    myTextField6.frame = CGRectMake(myTextField6.frame.origin.x, myTextField6.frame.origin.y - /*whatever you want to subtract from the y value*/, myTextField6.frame.size.width, myTextField6.frame.size.height); 

    return YES; 
} 
+0

Comment les champs de texte reçoivent-ils le message s'ils sont masqués par le clavier? En outre, la méthode doit retourner YES. – Costique

+0

Lorsque la vue est chargée, aucun clavier ne sera présent et, par conséquent, n'importe quel champ de texte pourrait être tapé. Cela déplacerait tous les champs de texte dont il a dit qu'ils sont couverts (les quatre derniers) par la quantité qu'il veut. Aussi, je me demandais, quel est l'avantage d'utiliser CGRectOffset par opposition à la réaffectation du cadre? – Jumhyn

Questions connexes