2009-12-01 34 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; 
} 

我已經編寫了此代碼來滾動視圖,但當鍵盤消失時它不會返回。如何在滾動完成時隱藏iPhone鍵盤

回答

1

您還沒有訂閱UIKeyboardWillHideNotifcation,只顯示 - 因此當鍵盤隱藏時它不會執行任何操作。