代码如下:
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