- (void)registerForKeyboardNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];
NSLog(@"register");
}
- (void)keyboardWasShown:(NSNotification *)aNotification {
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
displayTable.scrollEnabled = YES;
displayTable.contentInset = contentInsets;
displayTable.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;
if (!CGRectContainsPoint(aRect, activeField.superview.superview.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activeField.superview.superview.frame.origin.y-aRect.size.height+44);
[displayTable setContentOffset:scrollPoint animated:YES];
}
}
- (void)keyboardWillBeHidden:(NSNotification *)aNotification {
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
displayTable.contentInset = contentInsets;
displayTable.scrollIndicatorInsets = contentInsets;
}
在viewDidLoad调用下面方法
[self registerForKeyboardNotifications]
还有另外一种直接调用UItextfiled的代理方法,但是有一些小问题
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
UIView *view = textField.superview;
while (![view isKindOfClass:[BigBeautyCircleViewCell class]]) {
view = [view superview];
}
BigBeautyCircleViewCell *cell = (BigBeautyCircleViewCell*)view;
CGRect rect = [cell convertRect:cell.frame toView:self.view];
if (rect.origin.y / 2 + rect.size.height>=ViewHeight-216) {
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 216, 0);
[self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
return YES;
}
//结束编辑
-(void)textFieldDidEndEditing:(UITextField *)textField {
//调整回原来的位置
// self.bottomView.frame = CGRectMake(0, ViewHeight-50, ViewWidth, ViewHeight);
self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
self.tableView.scrollIndicatorInsets = UIEdgeInsetsZero;
}