ios 键盘遮挡,监听键盘调整view的frame

来源:互联网 发布:linux黑客系统 编辑:程序博客网 时间:2024/06/04 22:47

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

;

#pragma mark - keyboard events -///键盘显示事件- (void) keyboardWillShow:(NSNotification *)notification {    //获取键盘高度,在不同设备上,以及中英文下是不同的    CGFloat kbHeight = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;        //计算出键盘顶端到inputTextView panel底端的距离(加上自定义的缓冲距离INTERVAL_KEYBOARD)    CGFloat offset = (_passwordTextField.frame.origin.y+_passwordTextField.frame.size.height+INTERVAL_KEYBOARD) - (self.view.frame.size.height - kbHeight);        // 取得键盘的动画时间,这样可以在视图上移的时候更连贯    double duration = [[notification.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];        //将视图上移计算好的偏移    if(offset > 0) {        [UIView animateWithDuration:duration animations:^{            self.view.frame = CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);        }];    }}//键盘消失事件- (void) keyboardWillHide:(NSNotification *)notify {    //键盘动画时间    double duration = [[notify.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];    [UIView animateWithDuration:duration animations:^{        self.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);    }];}


1 0
原创粉丝点击