美文网首页
iOS获取键盘高度

iOS获取键盘高度

作者: lym不解释 | 来源:发表于2020-03-15 18:23 被阅读0次

    https://github.com/yanmingLiu/RACDemo

    
    - (void)addNoticeForKeyboard {
        //监听弹出键盘
        @weakify(self);
        [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable noti) {
            @strongify(self);
    
            NSDictionary *userInfo = [noti userInfo];
            NSTimeInterval animationDuration;
            UIViewAnimationCurve animationCurve;
            CGRect keyboardBeginFrame;
            CGRect keyboardEndFrame;
            [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] getValue:&keyboardEndFrame];
            [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] getValue:&keyboardBeginFrame];
            [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
            [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
    
            CGFloat offsetHeight = self.view.height - keyboardEndFrame.origin.y - kTabBarMargin;
            offsetHeight = offsetHeight > 0 ? offsetHeight : 0;
            
            NSLog(@"willShowNotification : %f\n, keyboardBeginFrame = %@\n,keyboardEndFrame = %@", offsetHeight,NSStringFromCGRect(keyboardBeginFrame),NSStringFromCGRect(keyboardEndFrame));
            
            [UIView animateWithDuration:animationDuration animations:^{
                [UIView setAnimationCurve:animationCurve];
                self.textField.y = self.view.height - 40 - kTabBarMargin;
                [self.view layoutIfNeeded];
            }];
    
        }];
    
        //可以监听收回键盘
        [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillHideNotification object:nil] subscribeNext:^(NSNotification * _Nullable noti) {
            @strongify(self);
    
            NSDictionary *userInfo = [noti userInfo];
            NSTimeInterval animationDuration;
            UIViewAnimationCurve animationCurve;
            [[userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey] getValue:&animationCurve];
            [[userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey] getValue:&animationDuration];
            
            CGFloat y = self.view.bounds.size.height - 40 - kNavigationH - kTabBarMargin;
            NSLog(@"willShowNotification : %f", y);
    
            [UIView animateWithDuration:animationDuration animations:^{
                [UIView setAnimationCurve:animationCurve];
                self.textField.y = y;
                [self.view layoutIfNeeded];
            }];
    
        }];
    }
    

    相关文章

      网友评论

          本文标题:iOS获取键盘高度

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