键盘遮挡———视图随键盘移动


#pragma mark --- 键盘生气回收动画通知
- (void)viewWillAppear:(BOOL)animated{
    [self KBNotification];
}

- (void)KBNotification{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotification object:nil];
}

#pragma mark --- 视图移动
//键盘升起时动画
- (void)keyboardWillShow:(NSNotification*)notif
{
    NSDictionary *info = [notif userInfo];
    NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    CGFloat keyDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
    __weak SellerOrderDetaiController * selfVC = self;
    CGRect fram = selfVC.view.frame;
    if (fram.origin.y < 0) {
        CGFloat move =(-fram.origin.y) - keyboardRect.size.height;
        [self moveView:move forView:selfVC.view duration:keyDuration];
        return;
    }
    [self moveView:-keyboardRect.size.height forView:selfVC.view duration:keyDuration];
}

//键盘关闭时动画
- (void)keyboardWillHide:(NSNotification*)notif
{
    NSDictionary *info = [notif userInfo];
    NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    CGFloat keyDuration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
    __weak SellerOrderDetaiController * selfVC = self;
    CGRect fram = selfVC.view.frame;
    if (fram.origin.y == 0) {
        return;
    }
    [self moveView:keyboardRect.size.height forView:selfVC.view duration:keyDuration];
}

- (void)moveView:(float)move forView:(UIView *)view duration:(CGFloat)duration{
    [UIView animateWithDuration:duration animations:^{
        CGRect frame = view.frame;
        frame.origin.y += move;
        view.frame = frame;
    }];
}

- (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
}

这个东西在页面之间跳转一定要记得键盘回收,否则系统随便发出通知,导致页面移动

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值