iOS软键盘遮挡UITableView内文本框问题

1、注册 UIKeyboardDidShowNotification/UIKeyboardDidHideNotification通知。

-(id) initWithNibName:(NSString*)nibNameOrNil bundle:nibBundleOrNil {if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {// 写在这里,或者viewDidLoad[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardShown:) name:UIKeyboardDidShowNotification object:nil];[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardHidden:) name:UIKeyboardDidHideNotification object:nil];}return self;}-(void) dealloc {[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];}

2、当通知到来,调整frame。

-(void) keyboardShown:(NSNotification*) notification {_initialTVHeight = _tableView;CGRect initialFrame = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];CGRect convertedFrame = [self.view convertRect:initialFrame fromView:nil];CGRect tvFrame = _tableView.frame;tvFrame;_tableView.frame = tvFrame;}-(void) keyboardHidden:(NSNotification*) notification {CGRect tvFrame = _tableView.frame;tvFrame.size.height = _initialTVHeight;[UIView beginAnimations:@”TableViewDown” context:NULL];[UIView setAnimationDuration:0.3f];_tableView.frame = tvFrame;[UIView commitAnimations];}

3、触发文本框,滚动tableView -(void) textFieldDidBeginEditing:(UITextField *)textField { NSIndexPath* path = [NSIndexPath indexPathForRow:row inSection:section]; [self performSelector:@selector(scrollToCell:) withObject:path afterDelay:0.5f]; } -(void) scrollToCell:(NSIndexPath*) path { [_tableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionNone animated:YES]; }

参考: 1.

,生命有限,努力无限

iOS软键盘遮挡UITableView内文本框问题

相关文章:

你感兴趣的文章:

标签云: