我在iphone应用程序中有表视图控制器。表视图有两个部分。第一部分有两行,第二部分有一行。第二部分有一个自定义表格视图单元格。
第二部分有一个文本字段,当文本字段开始编辑并弹出键盘时会隐藏该文本字段。我希望这个表格视图在键盘弹出时滚动。
我尝试了以下代码,我在不同的网站上遇到过这些代码但是徒劳无功。
提前致谢。
-(void) textFieldDidBeginEditing:(UITextField *)textField {
CGRect textFieldRect = [textField frame];
[self.tableView scrollRectToVisible:textFieldRect animated:YES];
}
atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
-(void) textFieldDidBeginEditing:(UITextField *)textField {
UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
[self.tableView scrollToRowAtIndexPath:[tableView indexPathForCell:cell]
atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
答案 0 :(得分:9)
我在Static Cell TVC上碰到了这个问题。覆盖viewWillAppear
而不是调用其超级时会出现问题。因此,如果您这样做,请务必致电
[super viewWillAppear:animated];
位于viewWillAppear
答案 1 :(得分:3)
您想使用表格视图的setContentOffset
方法。确定垂直滚动的幅度(以像素为单位),然后:
CGFloat verticalScroll = ... your code here ...
[self.tableView setContentOffset:CGPointMake(0, verticalScroll) animated:YES];
答案 2 :(得分:0)
我的问题是我在
中添加了包含UITextField的表格单元格- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
功能。如果这样做,自动UITableView滚动不起作用。
所以,你需要做一些算法来计算你的最后一行显示的时间,并将你的特殊UITableViewCell和其他所有的一起放在这里。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {