2009-12-01 5 views
0
-(void)viewWillAppear:(BOOL)animated 
{ 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window]; 
    [super viewWillAppear:animated]; 
} 

-(void)viewWillDisappear:(BOOL)animated 
{ 
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; 
    [super viewWillDisappear:animated]; 
} 

-(void)keyboardWillShow:(NSNotification *)notif 
{ 
    NSDictionary*info=[notif userInfo]; 
    NSValue* aValue= [info objectForKey:UIKeyboardBoundsUserInfoKey]; 
    CGSize keyboardSize=[aValue CGRectValue].size; 
    float bottomPoint= (text1.frame.origin.y+text1.frame.size.height+5); 
    //float bottomPoint= (text2.frame.origin.y+text2.frame.size.height+5); 
    //float bottomPoint= (text3.frame.origin.y+text3.frame.size.height+5); 
    scrollAmount=keyboardSize.height - (self.view.frame.size.height - bottomPoint); 
    if(scrollAmount > 0) 
    { 
     moveViewUp = YES; 
     [self scrollTheView:YES]; 
    } 
    else 
     moveViewUp = NO; 
    } 
} 

-(void)scrollTheView:(BOOL) movedUp 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    CGRect rect = self.view.frame; 
    if(movedUp) 
    { 
     rect.origin.y -= scrollAmount; 
    } 
    else 
    { 
     rect.origin.y += scrollAmount; 
    } 
    self.view.frame = rect; 
    [UIView commitAnimations]; 
} 

-(BOOL)text1ShouldReturn:(UITextField *)theTextField 
{ 
    [theTextField resignFirstResponder]; 
    if(moveViewUp) 
     [self scrollTheView:NO]; 
    return YES; 
} 

J'ai écrit ce code pour faire défiler la vue mais il ne revient pas lorsque le clavier disparaît.comment cacher le clavier de l'iPhone lorsque le défilement est terminé

Répondre

1

Vous n'êtes pas abonné à UIKeyboardWillHideNotifcation, seulement Show - ainsi il ne fera rien quand le clavier se cache.

Questions connexes