1

モーダル セグエで 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 コントローラーは、これを機能させるためにいくつかのクールな魔法を実行しています。私がやりたいのは、ナビゲーションバーをビューの上部に固定したままにすることだけです。

4

1 に答える 1

1

私のコメントで述べたように、UITableViewControllerラップインを使用できます。UINavigationController画面にデフォルトのナビゲーションバーが表示され、テーブルビューと一緒にスクロールしません。UITableViewControllerのrootViewControllerとして設定する必要がありますUINavigationController

としてクラッシュに直面している[UINavigationController setDumpInfo:]: unrecognized selector sent to instanceため、prepareForSegueメソッドを次のように変更する必要があります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"update info"]) {
        UINavigationController *nav = (UINavigationController *)segue.destinationViewController;
        UpdatesTableViewController *uvc = (UpdatesTableViewController *)nav.topViewController;
        uvc.dumpInfo = self.dumpInfo;
    }
}

基本的に、dumpInfoは、この場合でnavigationControllerはなく、で呼び出されていました。tableviewcontroller

于 2013-01-04T03:59:22.390 に答える