iOS 获得键盘的高度 NSNotificationCenter

来源:互联网 发布:网页nginx forbidden 编辑:程序博客网 时间:2024/04/29 18:34
//在遇到有输入的情况下。由于现在键盘的高度是动态变化的。中文输入与英文输入时高度不同。所以输入框的位置也要做出相应的变化#pragma mark - keyboardHight-(void)viewWillAppear:(BOOL)animated{    [self registerForKeyboardNotifications];}-(void)viewWillDisappear:(BOOL)animated{    [[NSNotificationCenter defaultCenter] removeObserver:self];}- (void)registerForKeyboardNotifications{    //使用NSNotificationCenter 鍵盤出現時    [[NSNotificationCenter defaultCenter] addObserver:self                                                  selector:@selector(keyboardWasShown:)                                                      name:UIKeyboardDidShowNotification object:nil];        //使用NSNotificationCenter 鍵盤隐藏時    [[NSNotificationCenter defaultCenter] addObserver:self                                                  selector:@selector(keyboardWillBeHidden:)                                                      name:UIKeyboardWillHideNotification object:nil];         }//实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置- (void)keyboardWasShown:(NSNotification*)aNotification{    NSDictionary* info = [aNotification userInfo];    //kbSize即為鍵盤尺寸 (有width, height)    CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;//得到鍵盤的高度    NSLog(@"hight_hitht:%f",kbSize.height);    if(kbSize.height == 216)    {        keyboardhight = 0;    }    else     {        keyboardhight = 36;   //252 - 216 系统键盘的两个不同高度    }    //输入框位置动画加载    [self begainMoveUpAnimation:keyboardhight];}//当键盘隐藏的时候- (void)keyboardWillBeHidden:(NSNotification*)aNotification{     //do something}//(TextView) 当键盘开始输入前。时行计算与动画加载-(void)textViewDidBeginEditing:(UITextView *)textView{    NSLog(@"gegin animation");    sendMsgTextView =textView;    resultCommunityTableview.frame = CGRectMake(0, 36, 320, 150);    //动画加载    [self begainMoveUpAnimation:0.0 ];    }//关闭键盘(TextView) 换行时。隐藏键盘-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text  {      resultCommunityTableview.frame = CGRectMake(0, 36, 320, 376);    if ([text isEqualToString:@"\n"]) {          [textView resignFirstResponder];          return NO;      }    return YES;  }  //输入结束时调用动画(把按键。背景。输入框都移下去)-(void)textViewDidEndEditing:(UITextView *)textView{    NSLog(@"tabtabtab");    [self endEditAnimation];        //释放    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];}//判断当前输入法-(void)textViewDidChangeSelection:(UITextView *)textView{    NSLog(@"wewe:%@",[[UITextInputMode currentInputMode] primaryLanguage]);    /*    if ([[UITextInputMode currentInputMode] primaryLanguage] == @"en-US") {         NSLog(@"en-US");     }     else     {         NSLog(@"zh-hans");     }      */}
1 0