iOS 自定义键盘顶部视图 UIToolBar InputAccessoryView

逻辑就是 要保证在键盘弹出来的时候自定义的View要在键盘的上方,在键盘隐藏的时候自定义的View也隐藏

那么需要监听到键盘的弹出和隐藏

首先呢写两个通知,来分别通知键盘的弹出和隐藏,我们在对其进行更改坐标添加动画等操作

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

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

 

// 根据键盘状态,调整toolBarView的位置

- (void) changetoolBarViewPoint:(NSNotification *)notification{

    NSDictionary *userInfo = [notification userInfo];

    NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGFloat keyBoardEndY = value.CGRectValue.origin.y;  // 得到键盘弹出后的键盘视图所在y坐标

    

    NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    

    // 添加移动动画,使视图跟随键盘移动

    [UIView animateWithDuration:duration.doubleValue animations:^{

        [UIView setAnimationBeginsFromCurrentState:YES];

        [UIView setAnimationCurve:[curve intValue]];

        

        self.toolBarView.center = CGPointMake(self.toolBarView.center.x, keyBoardEndY  - self.toolBarView.bounds.size.height/2.0);   // keyBoardEndY的坐标包括了状态栏的高度,要减去

        

    }];

    

 

}

-(void)changeHidenContentViewPoint:(NSNotification *)notification{

    

    NSDictionary *userInfo = [notification userInfo];

//       NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];

//       CGFloat keyBoardEndY = value.CGRectValue.origin.y;  // 得到键盘弹出后的键盘视图所在y坐标

       

       NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];

       NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey];

       

       // 添加移动动画,使视图跟随键盘移动

       [UIView animateWithDuration:duration.doubleValue animations:^{

           [UIView setAnimationBeginsFromCurrentState:YES];

           [UIView setAnimationCurve:[curve intValue]];

           

//           self.toolBarView.center = CGPointMake(0, SCR_H - 44);  // keyBoardEndY的坐标包括了状态栏的高度,要减去

           self.toolBarView.frame = CGRectMake(0, SCR_H - 44, SCR_W, 44);

       }];

    

    

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值