2

UITableViewController1 つのセクションと多くの行でグループ化されています。それぞれcellが 2 つの要素で構成されています。UILabel説明を含む a とUITextField入力用の a です。形だと思います。

下部には、次のビューに移動する「次へ」ボタンがあります。しかし、その前に 's を検証しUITextFieldます。ユーザーがフィールドに入力していない場合は、このフィールドにフォーカスを移して、ユーザーが何かを入力する必要があることを認識できるようにします。私はこれで試しました:

[inputField becomeFirstResponder];

押したボタンはビューの下部にあり、が上部にUITextFieldあると想像してください。この状況では、フィールドが遠すぎるため、フィールドに焦点が合いません。ゆっくり上にスクロールしてフィールドが表示されると、フィールドがファーストレスポンダーになり、カーソルが表示されます:-) 指で上にスクロールしたくありません。フィールドがフォーカスされ、自動的に表示されるはずです。becomeFirstResponder

自分のフィールドに直接「ジャンプ」する方法はありますか? becomeFirstResponder?の代替を使用します。フィールドに自動的にスクロールしますか?

ご協力いただきありがとうございます!

4

2 に答える 2

4

編集する UITextField を持つセルのインデックスがわかっている場合は、使用します



NSIndexPath* indexPath = [[NSIndexPath indexPathWithIndex:your_section_index] indexPathByAddingIndex:your_cell_index];
[tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionBottom animated:YES]

あなたが電話する前にbecomeFirstResponder

セルが画面外にある場合、iOS の一部のバージョンでは becomeFirstResponder が失敗することがあります。さらに、一部のバージョンでは、状況によってはテーブルビューで追加のスクロールが実行されます (たとえば、Apple のコードにより、レスポンダーがさらにスクロールしなくても画面から外れると判断された場合)。これらの問題を回避するには、スクロール アニメーションが完了した後にファーストレスポンダーになる必要がある場合があります。

于 2011-02-18T15:22:57.320 に答える