2010-10-29 3 views
1

J'ai une alertview en cours de création avec un champ de texte à l'intérieur. Lorsque je ferme la vue alertview via un bouton submit ou cancel, j'obtiens l'erreur wait_fences dans la console. il ne tombe pas en panne, ou je n'ai pas réussi à le faire tomber en panne, mais je voudrais vraiment comprendre ce qui se passe.wait_fences: impossible de recevoir la réponse: 10004003

alert = [[UIAlertView alloc] 
          initWithTitle:@"Lookup" 
          message:@"\n\n\n" 
          delegate:self 
          cancelButtonTitle:@"Cancel" 
          otherButtonTitles:@"Submit", nil]; 

label = [[UILabel alloc] initWithFrame:CGRectMake(12, 40, 260, 25)]; 
label.font = [UIFont systemFontOfSize:16]; 
label.textColor = [UIColor whiteColor]; 
label.backgroundColor = [UIColor clearColor]; 
label.shadowColor = [UIColor blackColor]; 
label.shadowOffset = CGSizeMake(0, -1); 
label.textAlignment = UITextAlignmentCenter; 
label.text = @"Enter 10-Digit ISBN Number"; 
[alert addSubview:label]; 

field = [[UITextField alloc] initWithFrame:CGRectMake(16, 83, 252, 25)]; 
field.font = [UIFont systemFontOfSize:18]; 
field.backgroundColor = [UIColor whiteColor]; 
field.keyboardAppearance = UIKeyboardAppearanceAlert; 
field.keyboardType = UIKeyboardTypeNumberPad; 
field.borderStyle = UITextBorderStyleBezel; 
field.delegate = self; 
[field becomeFirstResponder]; 
[alert addSubview:field]; 
[alert show]; 

J'ai regardé autour en ligne pour essayer de comprendre quel était le problème et certaines personnes avaient mentionné répondeur resigningFirst. J'ai ajouté cela à - (void) alertView: (UIAlertView *) alertView didDismissWithButtonIndex: (NSInteger) buttonIndex mais il n'a rien fait.

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
[field resignFirstResponder] 
if (buttonIndex == 1) { 
    NSLog(@"Submit"); 
} else { 
    NSLog(@"Cancel"); 
} 

}

J'ai ensuite ajouté une instruction if pour essayer de savoir si le champ était le premier intervenant et je me suis rien.

if([field isFirstResponder]) { 
    NSLog(@"field isFirstResponder"); 
} 

Quelqu'un at-il des suggestions de ce que je pourrais avoir mal fait?

Répondre

1

donc je pense que Ive a obtenu ce compris.

Il semble que lorsque j'appelais [field resignFirstResponder] de alertView: didDismissWithButtonIndex, firstResponder ne démissionnait pas vraiment et le clavier était forcé de sortir une seconde ou deux après la suppression de alertView. mais quand j'appelle [field resignFirstResponder] de alertView: clickedButtonAtIndex il renoncerait à firstResponder comme il est supposé le faire. J'ai également rencontré un problème si le alertview descendait avant d'être enlevé, pour compenser le clavier n'étant pas là, mais pour résoudre ce problème, j'ai créé une fonction dont le seul but est d'appeler [field resignFirstResponder] et de l'appeler from alertView: clickedButtonAtIndex et retardé son exécution par .2 secondes.

0

Avez-vous essayez de supprimer textfield comme:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 

[[alertView.subviews objectAtIndex:0] removeFromSuperview]; 


} 
+0

merci pour la réponse rapide. Je mets cela dans et maintenant je reçois une erreur en disant «La valeur du vide n'est pas ignorée comme elle devrait l'être». J'ai le sentiment que cela peut aider à résoudre le problème, mais je ne comprends pas vraiment ce que cela signifie ou où je dois commencer à chercher maintenant. J'ai essayé de chercher autour mais il semble venir pour une variété de problèmes. Merci. –

+0

désolé mon mauvais, édité ma réponse. –

+0

mettre ça juste me donne la même erreur (wait_fences ...). est-il possible de trouver quel est le premier intervenant? Je pensais que je faisais le textfield le premier répondeur mais il ne semble pas être. –

Questions connexes