美文网首页
动态获取键盘的高度

动态获取键盘的高度

作者: 南巷旧人M | 来源:发表于2016-08-17 15:07 被阅读54次

    作者:孟令文

    //在遇到有输入的情况下。由于现在键盘的高度是动态变化的。中文输入与英文输入时高度不同。所以输入框的位置也要做出相应的变化

    #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");

    }

    */

    }

    相关文章

      网友评论

          本文标题:动态获取键盘的高度

          本文链接:https://www.haomeiwen.com/subject/kmmmsttx.html