9
votes

UITEXTVIEW Hide Clavier sur iPhone

Je veux masquer le clavier lorsqu'un utilisateur appuie retour dans uitextview code> objet dans iPhone. Cependant, mystérieusement cela ne fonctionne pas pour uitextview code> mais travaillant pour uitextfield code>. Je suis incapable de comprendre pourquoi ...

C'est ce que j'ai fait: p>

1) J'ai créé une application basée sur la vue en XCode4. P>

2) dans .xib créé uitextview code>, uitextfield code> et uibutton code> Objets p>

3) a marqué les deux uitextfield code> et uitexview code> délégués au propriétaire du fichier dans les points de vente strong> em> p>

4) ajouté code> à @interface uiviewieProller .h p>

5) Ajouté TextfieldShouldeturn Code> Fonction dans .m p>

Voici les codes: P>

. /strong>

- (IBAction)doSomething:(id)sender {
    [textBoxLarge resignFirstResponder];
    [textBoxLittle resignFirstResponder];
}


0 commentaires

7 Réponses :


7
votes

Vous devez écrire du code dans uitextviewdeelegate et attribuer à votre classe.


7 commentaires

- (BOOL) TextView: (UITEXTVIEW *) TextViettextinrange: (Nstring) Texte de remplacement: (Nstring *) Texte {Si ([Texte ISequalTostring: @ "\ n"]) {[TextView Renignfiresponder]; } retour oui; }


Je l'ai eu J'ai écrit @interface KeyboardDisapparViewController: UIViewController Comment écrire à la fois et


Ouais dans le fichier .m. Dans .h Fichier Conforme à UitextViewDelegate comme vous l'avez fait pour UitextFieldDelegate


écrire comme ceci @interface KeyboardDisapparViewController: UIVIEWCONTROLLER donne des erreurs (ce qui est évident). Comment se conformer à la fois dans une déclaration?


Simple:


Cependant, il ne fonctionne toujours pas ... :( Le clavier se cache pour Textfield mais pas pour TextView ... :( :( :(


Non, tout mon code est identique que ci-dessus. Je viens de changer à @interface KeyboardDisapparViewController: UIViewController textboxlittle fonctionne déjà bien. Je pensais que l'ajout / suppression de n'a fait aucune différence sur TextBoxLittle ... Seul la vue UitextView qui crée des problèmes



20
votes

Trois choses:

Faites de votre vue Implémenter UitextViewelegate. P>

- (BOOL)textView:(UITextView *)textView
        shouldChangeTextInRange:(NSRange)range
        replacementText:(NSString *)text
{
    if ([text isEqualToString:@"\n"])
    {
        [textView resignFirstResponder];
    }
    return YES;
}


0 commentaires

5
votes

Trick simple Définir délégué code> pour la vue de texte, puis

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{
    if([text isEqualToString:@"\n"]) 
    {
        [textView resignFirstResponder];
        return NO;
    }
    return YES;
}


0 commentaires

-1
votes

Vous avez codé dans le fichier .H.

@interface keyboardDisappearViewController : UIViewController <UITextFieldDelegate>
{
    UITextView *textBoxLarge;
    UITextField *textBoxLittle;
}
@property (nonatomic, retain) IBOutlet UITextField *textBoxLarge;
@property (nonatomic, retain) IBOutlet UITextField *textBoxLittle;

- (IBAction)doSomething:(id)sender;
@end


1 commentaires

Vous avez changé le iboutlet , mais n'a pas changé l'ivar? Il ne devrait probablement pas avoir l'ivar en premier lieu, mais simplement laisser le compilateur le synthétiser, mais avoir certainement l'ivar non correspondant à la propriété ne peut être bon. Et quand même, lui dire de ne pas utiliser de uitextview juste éviter la question, étant donné que c'était le problème qu'il essayait de résoudre.



0
votes

Utilisez ce code

Inherit UitextViewDelegate protocole dans votre mode de vue Ajoutez le texte p> xxx pré>

dans ViewDidLoLoLoLoLoLoLoad Définissez-vous comme délégué: p>

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{ 
   return NO; 
}


0 commentaires

0
votes

points de clé strong>

  • Quelqu'un doit être à l'écoute de la touche de retour Appuyez sur P>

    • uitextfieldDelegate em> li>
    • TextfieldShouldretturn (Textfield: Uitextfield) em> li> ul> li>
    • Quelqu'un doit rejeter manuellement le clavier p>

      • démignfirstreesponder () em> li> ul> li> ul>

        # 1: strong> Créez un UITEXTFIELDELEGATE et attribuez-lui comme délégué à votre UitextField - P>

        func textFieldShouldReturn(textField : UITextField) -> Bool {
        
            self.titleField.resignFirstResponder();   //Here's the key!!!!!
        
            return true;                              //true just says 'default behavior'
        } 
        


0 commentaires

0
votes

Si vous êtes venu ici à la recherche de la solution Swift, comme si je l'ai fait, vous êtes ici :)

extension keyboardDisappearViewController : UITextViewDelegate {
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if(text == "\n") {
        textView.resignFirstResponder()
    }
    return true
}}


0 commentaires