1

UITableViewController のセルには、編集可能な textField があります。textField を編集するときは、現在のフィールドの行がキーボードの上にくるようにテーブルビューをスクロールする必要があります。これは私が使用しているコードです:

-(void)textViewDidBeginEditing:(UITextView *)textView
{   
    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];

    [self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell]
                          atScrollPosition:UITableViewScrollPositionTop
                                  animated:YES];
}

問題は、テーブルビューの最後の数セルでは機能しないことです。テーブルビューの contentSize と関係があると思います。最後のセルがキーボードの上にスクロールするように、テーブルビューのオフセットを調整する適切な方法はありますか?

4

1 に答える 1

5

代わりに

[self.tableView scrollToRowAtIndexPath:[self.tableView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];

あなたが使用することができます

[self.tableView setContentOffset:CGPointMake(0, CGRectGetMinY(cell.frame)) animated:YES];

これにより、最初または最後のセルをタップしたかどうかに関係なく、選択したセルが画面の上部 (UITableViewScrollPositionTop など) にスクロールされます。ContentOffset を制御すると、選択したセルを配置する場所を設定できます。

于 2013-10-22T23:45:25.680 に答える