2010-12-06 7 views
0

Salut J'utilise ce qui suit pour augmenter le clavier, j'ai beaucoup de contrôleurs de vue qui pourraient également l'utiliser mais mes tentatives pour le déléguer ont échoué. Je ne veux définitivement pas l'insérer dans tous les contrôleurs de vue. Serait très reconnaissant si des idéesDélégation d'Iphone

- (void)viewWillAppear:(BOOL)animated { 

void (^keyBoardWillShow) (NSNotification *)= ^(NSNotification * notif) { 
    NSDictionary* info = [notif userInfo]; 
    NSValue* aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey]; 
    CGSize keyboardSize = [aValue CGRectValue].size; 
    float bottomPoint = (ivcTextField.frame.origin.y + ivcTextField.frame.size.height + 10); 
    scrollAmount = keyboardSize.height - (self.view.frame.size.height - bottomPoint); 

    if (scrollAmount > 0) { 
     moveViewUp =YES; 
     [self scrollTheView:YES]; 
    } 
    else 
     moveViewUp = NO; 
}; 

[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillShowNotification object:self.view.window queue:nil 
               usingBlock:keyBoardWillShow]; 

void (^keyBoardWillHide) (NSNotification *)= ^(NSNotification * notif) { 
    if (moveViewUp) [self scrollTheView:NO];  
}; 
[[NSNotificationCenter defaultCenter] addObserverForName:UIKeyboardWillHideNotification object:self.view.window queue:nil 
               usingBlock:keyBoardWillHide]; 

[super viewWillAppear:animated]; 

} - (void) viewWillDisappear: (BOOL) animé {

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; 
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; 
[super viewWillDisappear:animated]; 

}

+0

Pourquoi ne pas simplement créer une sous-classe de UIViewController? – nduplessis

Répondre

0

Ces méthodes exécuteront pour la classe UIViewController, donc je pense que vous pouvez envelopper ces méthodes par catégorie UIViewController.

@interface UIViewController (Ext_Keyboard) 

- (void)registerObserverForKeyboardDidShow; 
- (void)unregisterObserverForKeyboardDidShow; 

- (void)registerObserverForKeyboardDidHide; 
- (void)unregisterObserverForKeyboardDidHide; 

@end 
+0

Aha, merci pour l'aide. – zed111

+0

Si cette réponse vous aide, pouvez-vous voter ou cliquer sur la coche pour la réponse. – AechoLiu