我有一个包含10行的UITableView
。每个单元格中都有UITextField
。
问题是,当我点击底部单元格中的UITextField
时,键盘会弹出并阻止单元格。我怎么处理这个?我是否需要为tableview制作动画或其他内容?
更新代码:
- (void)textFieldDidBeginEditing:(UITextField *)textField{
self.vitalsTableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow];
[self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
答案 0 :(得分:5)
使用UITableView的- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated
方法
示例:
[tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
会将tableView滚动到维持单元格可见的最低可能偏移量。如果您的单元格下面没有足够的单元格,则可以为表格设置contentInset以允许滚动偏移。
也许您的UITextField委托是表视图控制器。您可以在- (void)textFieldDidBeginEditing:(UITextField *)textField
对于底部单元格:
- (void)textFieldDidBeginEditing:(UITextField *)textField{
tableView.contentInset=UIEdgeInsetsMake(0,0,200,0);
[tableView scrollToRowAtIndexPath:cellIndexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
- (void)textFieldDidBeginEditing:(UITextField *)textField{
tableView.contentInset=UIEdgeInsetsMake(0,0,0,0);
}
答案 1 :(得分:1)
如果有人在iOS 7中遇到同样的问题:我发现这个问题发生在我身上只是因为我忘了在我自己的viewWillAppear:
实现中调用超级类viewWillAppear:
的实现。一行解决了这个问题:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// Do whatever you need to
}