滚动到Popover内的TableView中的单元格

时间:2012-12-04 09:32:57

标签: cocoa-touch resize tableview popover virtual-keyboard

我有一个具有固定行数的tableView(7)。每行包含一个标签+一个textField。

当触摸文本文件时,会显示虚拟键盘,这会导致弹出窗口大小调整,并且新大小只有​​7行中的4个可见。我想要做的是,每次用户触摸新的文本字段时,tableview都会滚动到包含它的单元格。

我试过

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    CGPoint point = [textField.superview convertPoint:textField.frame.origin toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point];
    NSLog(@"Row %d section %d", indexPath.row, indexPath.section);
    [tableView reloadData];
    [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:NO];
}

以及

- (void)textFieldDidBeginEditing:(UITextField *)textField{
    CGPoint point = [textField.superview convertPoint:textField.frame.origin toView:self.tableView];
    CGPoint contentOffset = tableView.contentOffset;
    contentOffset.y += (point.y - self.navigationController.navigationBar.frame.size.height); // Adjust this value as you need
    [tableView setContentOffset:contentOffset animated:YES];
}

但它们都不起作用。正在调用该方法(我已设置委托)。由于虚拟键盘的调整大小,我很确定它不能正常工作,但我不知道是谁能解决它。

有任何帮助吗?非常感谢

1 个答案:

答案 0 :(得分:1)

以下作品完美无缺。

- (void)textFieldDidEndEditing:(UITextField *)textField {

    //  Find the cell displaying this textField and scroll it into the middle of the tableView
    UITableViewCell *cell = (UITableViewCell *)[[textField superview] superview];
    NSIndexPath *cellPath = [self.tableView indexPathForCell:cell];
    [self.tableView scrollToRowAtIndexPath:cellPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}