(iOS)关于键盘遮挡textfield问题

记录一下自己经常遇到问题。使用textfield(textview)。当输入框位置比较靠下时,弹出的键盘会遮挡输入框,这是就需要动态移动输入框编辑状态时self.view的位置,

自己经常用的方法有两个

1、项目中很多地方用到输入框,并出现这些问题,用第三方库---IQKeyboardManager,非常的方便,什么都不用写就能实现很多功能。就不详叙述了

2、一两处地方用到,可以自己简单的写一下

  两个通知:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

self.tempTF------定义的中间textfield。当有多个输入框是,在代理中

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField

{

    self.tempTF = textField;

    return YES;

}

 

 --------------------------------------------------------------------------------------------------------------------------------------------------

/**

 *  键盘出现

 */

- (void)keyboardWillShow:(NSNotification *)notification

{

    //获取键盘高度,在不同设备上,以及中英文下是不同的

    CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;

    // 取得键盘的动画时间,这样可以在视图上移的时候更连贯

    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    CGFloat offset = HEIGHT - (self.tempTF.frame.origin.y+self.tempTF.frame.size.height+kbHeight);

    if(offset<=0)

    {

        [UIView animateWithDuration:duration animations:^{

            CGRect frame = self.view.frame;

            frame.origin.y = offset;

            self.view.frame = frame;

        }];

    }

}

/**

 *  键盘消失

 */

- (void)keyboardWillHide:(NSNotification *)notification

{

    // 键盘动画时间

    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

    

    //视图下沉恢复原状

    [UIView animateWithDuration:duration animations:^{

        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

    }];

}

 --------------------------------------------------------------------------------------------------------------------------------------------------

over---新手,有很多不足,敬请见谅。 

 

posted on 2016-05-13 09:04  HL丶  阅读(404)  评论(0编辑  收藏  举报

导航