轻松搞定UITableView中的键盘处理

代码如下:

1,通知:

#pragma mark - 键盘处理

-(void) keyboardWillShow:(NSNotification *)note{

    // get keyboard size and loctaion

    //键盘的frame

    CGRect keyboardBounds;

    [[note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey] getValue: &keyboardBounds];

    keyboardBounds = [self.view convertRect:keyboardBounds toView:nil];

    

    //主窗口

    UIWindow* win = [UIApplication sharedApplication].keyWindow;

    DLog(@"%@",win);

    

    //_currentTF是cell中正在编辑的TF

    UITableViewCell* cell = [PCMNWE cellByTableView:self.tableView tf:_currentTF];

    NSIndexPath* indexPath = [self.tableView indexPathForCell:cell];

    CGRect frame = [self.tableView convertRect:[self.tableView rectForRowAtIndexPath:indexPath] toView:win];

    DLog(@"%f",keyboardBounds.size.height);

    CGFloat height = frame.origin.y+44.0;

    if ((height + keyboardBounds.size.height) > UI_SCREEN_HEIGHT) {

        CGRect frameNew = self.tableView.frame;

        frameNew.origin.y -= keyboardBounds.size.height - (UI_SCREEN_HEIGHT - height);

        [UIView animateWithDuration:0.2 animations:^{

            self.tableView.frame = frameNew;

        }];

    }

    

}

2,代理:

- (void)textFieldDidEndEditing:(UITextField *)textField {

    

    //将self.tableView.frame打回原形

    [UIView animateWithDuration:0.3 animations:^{

        self.tableView.frame = CGM(0,0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT - UI_STATUS_BAR_HEIGHT - 44.0);

    }];

}

暂时没有发现这段代码有什么问题.

若有BUG,欢迎加QQ指教:771722918

原文地址:https://www.cnblogs.com/iOS771722918/p/4363829.html