代码改变世界

ios中键盘处理适合ipad 和iphone

2013-08-02 16:32  甘超波  阅读(420)  评论(0编辑  收藏  举报
  
  [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasShown:)
                                                 name:UIKeyboardDidShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWasHidden:)
                                                 name:UIKeyboardDidHideNotification object:nil];

=======
-(void)keyboardWasShown:(NSNotification*)aNotification{
    
    NSDictionary *info=[aNotification userInfo];

    CGRect KeyBoardrect=[info[UIKeyboardBoundsUserInfoKey] CGRectValue];
    int curve=[info[UIKeyboardAnimationCurveUserInfoKey] intValue];
    CGFloat duration=[info[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
     UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
     if ([NSStringFromClass([firstResponder class]) isEqualToString:@"UITextView"]) {

         CGFloat height=self.view.bounds.size.height;//view的高度
         CGFloat y=self.remarksTextView.frame.origin.y+KHeight;//文本框的高度
         CGFloat keyboardheight=KeyBoardrect.size.height+44;//键盘高度--》中文高度44
         CGFloat h=height-y-keyboardheight;
         NSLog(@"%@--keyboard->",info);
         NSLog(@"height=%f-- -->",height);
         
         if(h<0){
             [UIView beginAnimations:nil context:nil];
             [UIView setAnimationCurve:curve];
             [UIView setAnimationDuration:duration];
             CGRect rect=self.view.frame;
             rect.origin.y+=h;
             self.view.frame=rect;
             [UIView commitAnimations];
         }
     }
}

-(void) keyboardWasHidden:(NSNotification*)aNotification
{
    NSDictionary *info=[aNotification userInfo];

    int curve=[info[UIKeyboardAnimationCurveUserInfoKey] intValue];
    CGFloat duration=[info[UIKeyboardAnimationDurationUserInfoKey] floatValue];
    
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationCurve:curve];
    [UIView setAnimationDuration:duration];
    self.view.frame=_lastRect;
    [UIView commitAnimations];

}