2016-01-11 4 views
1

J'ai ajouté un UITextField à mon story-board:UITextField ne répondant pas à des touches ou ne deviendra pas actif

@property (weak, nonatomic) IBOutlet UITextField *nameField; 

Et il fonctionnait très bien au début, mais a eu quelques problèmes de contraintes qui ont causé la vue de ne pas construire correctement un iPhone 5. J'ai donc manipulé certaines des contraintes pour l'afficher correctement et maintenant le clavier ne se lève jamais/l'UITextField refuse de répondre aux touches OU devient actif.

J'ai essayé de définir un UITapGestureRecognizer sur le champ nom, ne fonctionnait pas.

je me suis assuré qu'il n'y avait pas de blocage des vues (il vérifié sur le débogueur de vue, puis explicitement appelé à [self.view bringSubviewToFront:self.nameField];viewDidAppear)

J'ai essayé [self.nameField setUserInteractionEnabled:YES]; ainsi que pourquoi pas.

Alors je suis allé au story-board, cliqué sur le champ de texte et sous l'onglet de connexion dans le menu à droite, je regardais « envoyés événements » et branché Touch Up Intérieure à une méthode IBAction:

- (IBAction)beginNameEdit:(id)sender { 
    NSLog(@"Edit begin"); 
    BOOL accepted = [self.nameField becomeFirstResponder]; 
    if (accepted) { 
     NSLog(@"accepted"); 
    } 
} 

Rien ne se passe, (Modifier début n'a pas imprimé). (J'ai également touché à l'intérieur de la limite, mais peu importe)

Alors, j'ai connecté Touch Down à la même IBAction.

Cette fois-ci, j'ai commencé à « Modifier commencer » à imprimer, mais l'appel à devenir le premier intervenant n'a rien malgré acceptée effectivement s'imprimé (ce qui signifie que, selon Apple, le champ de texte accepté le statut de première répondeur)

Je n'arrive pas à rendre mon textField actif et donc il est toujours bloqué sur l'affichage du texte de l'espace réservé ... Cela n'a aucun sens, surtout parce que je serais choqué si le fait de jouer avec certaines contraintes de disposition automatique pouvait avoir n'importe quel effet.

Des suggestions?

+0

Dans l'inspecteur (volet droit de Xcode), dans l'onglet Identité, une case à cocher permet d'autoriser l'interaction de l'utilisateur. – Tim

+0

Oui, c'est activé. Je n'ai touché à aucun des paramètres par défaut. Voici une image pour la clarté: https://www.dropbox.com/s/wutmxmw9jex95ah/Screenshot%202016-01-11%2019.04.02.png?dl=0 – gadu

Répondre

2

Ok, et classique la réponse-is-the-last-chose-expect DES RESULTATS DE PROFESSIONNELS mode:

j'utilisais le simulateur pour tester l'application. Il s'avère que le clavier ne sort pas toujours lorsque vous utilisez le simulateur, car il détecte automatiquement le fait que vous avez un clavier ACTUAL sur l'ordinateur que vous utilisez. Donc, au lieu d'un clavier arrivant sur le simulateur, il devenait silencieusement le premier répondeur et attendait que je tape quelque chose sur le clavier de mon ordinateur.

Pourquoi le clavier arrivait plus tôt et pas maintenant, je n'ai aucune idée. Mais je vais laisser cela au cas où quelqu'un d'autre serait confronté à ce problème.

+1

Appeler le menu Simulateur iOS. Cliquez sur Matériel, puis sur Clavier. Sélectionnez Toggle Software Keyboard. Ou simplement '⌘-K'. – rmaddy