モーダル セグエで UITextViews を含むカスタム セルを持つグループ化された tableView を持つアプリを作成しています。各セル/テキストビューでテキストを編集できるようにしたい。私の問題は、ビューの下部にあるセル/テキストビューをスクロールして、キーボードが表示されたときにキーボードの上に表示されるようにすることです。
編集:コメントで要求されたprepareForSegue:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"update info"]) {
UpdatesTableViewController *uvc = (UpdatesTableViewController *)segue.destinationViewController;
uvc.dumpInfo = self.dumpInfo;
}
}
UITableView コントローラーを使用すると、すべてがうまく機能します。テキストビューが firstResponder になると、各セル/テキストビューがビューの一番上までスクロールされるため、編集中に表示されます。しかし、tableView がスクロールすると、tableView の上部に追加したナビゲーション バーがスクロール オフします。
UIViewController を使用してナビゲーション バーとテーブル ビューを追加すると、UITableView scrollToRowAtIndexPath:atScrollPosition:animated: メソッドを使用してセルを上にスクロールできます。また、ナビゲーション バーは固定されたままです。しかし、一番下のセルは、表示するのに十分な高さまでスクロールできません。
- (void)textViewDidBeginEditing:(UITextView *)textView
{
CGPoint location = [textView.superview convertPoint:textView.center toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:location];
[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition: UITableViewScrollPositionTop animated:YES];
}
UITableView コントローラーは、これを機能させるためにいくつかのクールな魔法を実行しています。私がやりたいのは、ナビゲーションバーをビューの上部に固定したままにすることだけです。