UITextView saisie impossible

Bonjour,


 


Jusqu'à  présent je pouvait saisir, modifier le texte de mon UITextView.


 


Maintenant peut-être suite a une mauvaise manipulation... dans l'émulateur le curseur de l'UITextView clignote mais impossible de modifier mon texte.


 


dans l'inspection d'attribut l'édition et la sélection sont bien cocher


dans l'inspection des identités l'accessibilité est cocher ainsi que l'interaction des utilisateurs


 


et dans mon code j'ai rajouter ;     ....resignFirstResponder];


 


mais toujours rien et je suis persuadé d'une .... couillonade :) ... de ma part ::)


Réponses

  • Est-ce qu'une autre vue ne recouvrirait pas ton TextView par hasard ?


  • apparemment non, dans le storyboard j'ai View et en dessous Textview.




  • et dans mon code j'ai rajouter ;     ....resignFirstResponder];




     


    Où as-tu mis le "resignFirstResponder" dans ton code? Cela permet que ton textView ne soit plus ciblé.


     


    Puis il me semble que le simulateur n'affiche pas le clavier si une certaine option est activée. Est-ce que si tu tapes sur le clavier de ton ordinateur du texte apparaà®t?



  • Où as-tu mis le "resignFirstResponder" dans ton code? Cela permet que ton textView ne soit plus ciblé.


     


    Puis il me semble que le simulateur n'affiche pas le clavier si une certaine option est activée. Est-ce que si tu tapes sur le clavier de ton ordinateur du texte apparaà®t?




    "resignFirstResponder" dans 'viewDidLoad' (j'ai pas le source sous les yeux) mais je l'ai rajouter quand cela ne fonctionner plus.


     


    pour le clavier ce n'est pas un probléme il ne c'est jamais afficher. Je peux bouger le curseur mais pas saisir de texte.

  • As tu inclu des méthode delegate du textView dans ton code? 




  • As tu inclu des méthode delegate du textView dans ton code? 




    bingo.. c'était çà , j'ai due enlever les slash par inadvertance est rendre forcément la ligne active.


     


    merci a vous tous pour vôtre aide et bonne soirée

  • je reviens sur mes exploits :D


     


    super le 'delegate', mais on fait quoi quand on veut les deux, la détection de clavier (shouldChangeTextInRange) et l'affichage des touches saisies en même temps ?


     


    a+


  • CéroceCéroce Membre, Modérateur

    À un moment donné, il n'y a qu'un délégué. Mais le délégué pour relayer les messages à  un autre objet, par exemple.




  • À un moment donné, il n'y a qu'un délégué. Mais le délégué pour relayer les messages à  un autre objet, par exemple.




    un lien ? :)

  • Je vois pas.. ???


    j'ai bien trouver ce lien... mais relayer les messages a autre objet... je suis a la rue total :o


  • Si tu mets un juste un "return true" dans la fonction delegate shouldChangeTextInRange normalement le comportement sera le même que si tu ne mettais pas la fonction.


     


    Une fonction delegate permet de "notifier" un objet de certaine modification / utilisation d'un autre objet.


     


    Ici ton textView va renseigner ta classe sur un potentiel changement d'état (ajout de texte, clique sur le bouton "done", l'utilisateur édite le texte)


    Tu peux tous les utiliser en même temps.


     


    Je ne comprends pas vraiment ce que tu veux faire. 


    Détecter les changement du texte avec shouldChangeTextInRange n'empêche pas de voir le clavier ou les touches séléctionnées par l'utilisateur. A moins que tu ai une erreur de code dans la fonction shouldChangeTextInRange.


     


    Un exemple d'utilisation de fonction délégué qui pourrait ressembler à  ce que tu fait.


     


    Dans une voiture récente par exemple il y a plein d'options les délégués marche un peu pareil quand tu ouvre la porte elle signale a la voiture qu'elle est ouverte, si le moteur est allumé il va y avoir un bip, la lumière du plafonnier va s'allumer, pour un peu si la porte était fermé a clé elle s'ouvrirai.


     


    En code ça rendrai un controller Voiture qui s'abonne a un delegate DoorDelegate :



    @interface Voiture : UIViewController <DoorDelegate>
    @property (nonatomic, strong)DoorController *door;
    ...
    @end

    Pour la suite la classe voiture choisirai les bonne fonction dans la liste des fonctions delegate DoorController pour pouvoir lancer c'est fonctionnalité



    @implementation ArticleCell

    - (void)viewDidLoad
    {
    [super viewDidLoad]
    //Indique que les message du delegate de door seront transmis a ton objet self
    self.door.delegate = self;
    ....
    }

    //Ensuite on fait appel au fonction de DoorController

    - (void)doorController:(DoorController *)doorController willOpenDoor:(TypeDoor)typeDoor
    {
    //type door pourrait être le type portière arrière / avant, droite / gauche
    if([doorController isClose])
    {
    [doorController open];
    }
    }

    - (void)doorController:(DoorController *)doorController didOpenDoor:(TypeDoor)typeDoor
    {
    [self.lightRoof start];
    if([self.motor isOn])
    {
    [self.bip start];
    }

    }

    On pourrait imaginer beaucoup d'autre possibilité par exemple quand les portes se ferment quand elle sont mal fermées ou autre.


    C'est exactement ce qu'il se passe pour les textView quand il sont sélectionné ou non  quand ils s'ouvrent, se ferment. C'est dans ces fonctions qu'il faut que tu mette ton code. Le tout est de bien comprendre quand ces fonctions sont appelées pour ne pas faire n'importe quoi.

  • Bonjour Nasatya


     


    si je n'avais pas le texte qui s'afficher c'est que dans 'shouldChangeTextInRange' j'avais return 0 au lieu de return YES ou 1... j'ai mis du temps B) ::)


     


    merci bien.


  • Je me doutais que c'était ça c'est pour ça que je te demandais si tu utilisais les delegate. En objective c utilise plutôt YES ou NO je saurais pas te l'expliquer comme ça à  froid mais c'est plus optimisé.


    Du coup c'est bon pour ton problème tu as tout compris?


  • lucluc Membre
    décembre 2015 modifié #15


    Je me doutais que c'était ça c'est pour ça que je te demandais si tu utilisais les delegate. En objective c utilise plutôt YES ou NO je saurais pas te l'expliquer comme ça à  froid mais c'est plus optimisé.


    Du coup c'est bon pour ton problème tu as tout compris?




    mon problème est résolu. :)  je chercher dans le mauvais 'sens'...


    merci bien Nasatya.


Connectez-vous ou Inscrivez-vous pour répondre.