J'essaie de me débarrasser du clavier lorsque l'utilisateur touche à l'extérieur de mon Uitextfield, en utilisant cette méthode: Cependant, cela semble appeler une méthode appelée après avoir appuyé sur Le bouton de retour sur le clavier, mais je veux juste que le clavier disparaisse, ne pas appuyer sur le retour pour moi.
Comment puis-je accomplir cela? P> Merci! P> Edit: La réponse de Tgilani est la méthode la plus simple, fonctionne comme un charme, sans passer à Uicontrol. Mais je suppose que la réponse de Jonkroll fonctionne également. P> p>
3 Réponses :
Essayez update: p> prenez une valeur booléenne et définissez-la sur false à la méthode init. Dans votre dans votre méthode sur laquelle vous appelez la méthode de la mise en scène, définissez Boolean à vrai. p> TextfieldShouldretturn code> Méthode de la méthode de délégation, exécutez le code s'il est faux, sautez sinon p>
Voici comment j'ai géré cela auparavant. Créez d'abord une méthode sur votre contrôleur d'affichage qui rejetera le clavier en démissionnant d'un statut de premier répondeur sur votre champ de texte: suivant, dans votre scène de scénario pour votre Enfin, dans votre modifier: p> Une partie de votre inquiétude semble être que à la place, je mettrai ce code dans une méthode distincte: p> puis appelez cette méthode via une action cible lorsque votre champ de texte envoie l'événement de contrôle ViewController Code> (ou nib code>, si vous n'utilisez pas de storyboards) Modifiez la classe de la vue Affichage CODE> CODE> A partir de UIView code> à UICONTROL CODE >. La propriété code> est effectivement l'arrière-plan derrière vos autres éléments de l'interface utilisateur. Le type de classe doit être modifié car uiview code> ne peut pas répondre aux événements tactiles, mais uicontrol code> (qui est une sous-classe directe de uiview code>) peut répondre à eux. P> ViewDidDload de ViewController: CODE>, indiquez à votre contrôleur d'affichage d'exécuter votre démissionnette code> méthode lorsque la vue reçoit un uicontroleventTouchdown code> événement. p> TextFieldDentrediting: code> est appelé quand Le clavier est rejeté. C'est inévitable, il sera toujours appelé à chaque fois qu'un champ de texte perd la mise au point (c'est-à-dire le premier statut de répondeur). On dirait que votre problème est que vous avez mis le code à effectuer lorsque l'utilisateur clique sur le bouton de retour dans TextFieldDIdenting: code>. Si vous ne souhaitez pas que le code fonctionne lorsque l'utilisateur touche à l'extérieur du champ de texte, ce n'est pas le lieu approprié pour le mettre. P> uicontroleventeditdidididendonexit code>. p> [mainTextController addTarget:self action:@selector(textFieldReturn:) forControlEvents:UIControlEventEditingDidEndOnExit];
Il conviendra éventuellement appeler à résigneur, qui appelle la méthode appelée après avoir appuyé sur le bouton de retour (je pense textfieldDentrediting)
Je suis donc confus - vous dites que vous voulez renvoyer le clavier, mais que votre champ de texte conserve le statut de premier répondeur? Si oui, ce n'est pas possible. Vous êtes correct, la technologie TextFieldDidentiviting sera appelée quoi que ce soit lorsque le clavier est rejeté et que le champ de texte perd la mise au point. Au lieu de mettre la logique de votre bouton de retour là-bas, examinez-la à l'aide d'une action cible pour l'événement de contrôle UICONTROLEVENTEDITIVREDIDENDONEXIT. De cette façon, vous pouvez distinguer entre l'utilisateur frapper le bouton de retour sur le clavier lors de l'édition du champ de texte VS Utilisateur en laissant le champ de texte en cliquant sur Ailleurs dans la vue.
Je ne t'ai pas complètement compris. Pouvez-vous modifier votre réponse pour montrer ce que vous vouliez dire? Merci
Vous devez modifier votre à partir de là, vous créez simplement Un ViewController's code> Voir la propriété code> uIView code> à uicontrol code> à l'aide de l'inspecteur d'identité: ibaction CODE> et dit à la Textfield de rejeter (ce que je suppose que votre maintexController code>). Si maintextController code> n'est pas le champ de texte que vous souhaitez que le clavier rejeter puis modifier la méthode de modification de la méthode code> résigneur code> à votre champ de texte comme. P> - (IBAction)backgroundTap:(id)sender {
[myTextField resignFirstResponder];
}