监听键盘位置,使输入框跟随键盘移动

第一步,注册Keyboard通知(在ViewDidLoad中或者viewWillAppear中注册

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardDidChangeFrame:)name:UIKeyboardDidChangeFrameNotificationobject:nil];

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(keyboardWillHide:)name:UIKeyboardWillHideNotificationobject:nil];


第二步,实现通知方法

- (void)keyboardWillShow:(NSNotification *)notification

{

    NSDictionary* info = [notificationuserInfo];

    kbSize = [[infoobjectForKey:UIKeyboardFrameBeginUserInfoKey]CGRectValue].size;

    NSLog(@"%lf",kbSize.height);

}


- (void)keyboardDidChangeFrame:(NSNotification *)notification

{

    

    NSDictionary* info = [notificationuserInfo];

    CGRect kbRect = [[infoobjectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue];

    kbSize = [[infoobjectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;

    NSLog(@"%lf",kbSize.height);

    if (self.view.origin.y<0) {

        return;

    }

    if (kbRect.origin.y >=ViewHeight) {

        return;

    }

    self.bottomView.top =ViewHeight-kbSize.height-self.bottomView.height;

    [self.viewaddSubview:self.bottomView];  //这里的self.bottomView就是放UITextfiled的一个视图


      //这是在另一个控制器里面根据实际视图效果计算的高度

//    kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

//    

//    UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height-44, 0.0);

//    self.tableView.scrollEnabled = YES;

//    self.tableView.contentInset = contentInsets;

//    self.tableView.scrollIndicatorInsets = contentInsets;

//    NSLog(@"keyboardWasShown");

//    

    If active text field is hidden by keyboard, scroll it so it's visible

    Your application might not need or want this behavior.

//    CGRect aRect = self.view.frame;

//    aRect.size.height -= kbSize.height;

//    BigBeautyCircleViewCell *cell = [[BigBeautyCircleViewCell alloc] init];

//    if (!CGRectContainsPoint(aRect, cell.bottomView.commentFiled.superview.superview.frame.origin) ) {

//        CGPoint scrollPoint = CGPointMake(0.0, cell.bottomView.commentFiled.superview.superview.frame.origin.y-aRect.size.height+44);

//        [self.tableView setContentOffset:scrollPoint animated:YES];

//    }

}


- (void)keyboardWillHide:(NSNotification *)notification

{

    self.bottomView.bottom =ViewHeight;

    [self.viewaddSubview:self.bottomView];

}


第三步,移除通知(在dealloc或者viewWillDisappear中移除

[[NSNotificationCenterdefaultCenter]removeObserver:selfname:UIKeyboardWillShowNotificationobject:nil];

[[NSNotificationCenterdefaultCenter]removeObserver:selfname:UIKeyboardDidChangeFrameNotificationobject:nil];

[[NSNotificationCenterdefaultCenter]removeObserver:selfname:UIKeyboardWillHideNotificationobject:nil];


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值