2010-10-02 15 views
2

J'ai besoin de savoir quel champ de texte est le premier répondeur pour que mon clavier personnalisé fonctionne. Dans le code ci-dessous, j'ai grossièrement trop simpliste mon programme, mais est ici l'essentiel du problème:Suivi de l'objet firstResponder

@implementation SimplePickerViewController 
@synthesize pickerKeyboard; 
@synthesize textView; 
@synthesize textView2; 
@synthesize firstResponder; 

-(void)viewDidLoad{ 
    pickerKeyboard = [[PickerKeyboardViewController alloc] initWithNibName:@"PickerKeyboard" bundle:nil]; 
    pickerKeyboard.delegate = self; 
    [self.textView setInputView:pickerKeyboard.view]; 
    [self.textView setDelegate:self]; 
    [self.textView2 setInputView:pickerKeyboard.view]; 
    [self.textView2 setDelegate:self]; 
} 

-(void)hideKeyboard{ 
    [self.firstResponder resignFirstResponder]; 
    self.firstResponder = nil; //without this line, the code doesn't work. 
} 
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{ 
    self.firstResponder = textView; 
    [self.pickerKeyboard.picker reloadAllComponents]; 
    return YES; 
} 

Si je supprime la ligne de réglage du firstResponder à zéro, le code cesse de fonctionner correctement, mais je ne suis pas Bien sûr pourquoi. (Sans cette ligne, je peux sélectionner le premier textView pour faire apparaître le clavier, mais après je ne pourrai jamais ramener le clavier.) Des idées? Merci!

Répondre

3

Je ne suis pas sûr de comprendre pourquoi firstResponder doit être . notaient un clavier personnalisé au travail, j'utiliser un clavier personnalisé sans savoir ce que le premier intervenant est

utilisez-vous.

textView.inputView = pickerKeyboard 

que diriez-vous ce qui suit, a appelé la vue de démissionner de la premier intervenant:

[self.view endEditing:NO]; 
2

J'ai eu un problème similaire et je viens de comprendre le problème. Quelque part dans une partie du code du premier répondeur d'Apple, ils utilisent un sélecteur nommé firstResponder. Lorsque vous avez créé la propriété firstResponder, vous avez par inadvertance ignoré ce sélecteur. Cela provoquera l'échec du code d'Apple. Ceci, à mon humble avis, est un bug dans le cadre d'Apple, et la méthode firstResponder n'est documentée nulle part. Nommez votre propriété myFirstResponder ou toute autre chose et tout devrait bien fonctionner.

Voir Why does the keyboard not show when a view is popped from the navigation stack?

+0

Vous êtes génial !!! C'était mon problème exact. –