0

UITextFieldsをUITableViewCellsに追加するためにアプリケーションでこれを使用していますが、キーボードのツールバーの次のボタンを使用してユーザーが次の項目にジャンプできるようにする方法がわかりません.ここに私のコード

 IBOutlet UITextField *contNo,*breed,*coat,*color,*birthdate;
 IBOutlet UIToolbar *toolBar;
 IBOutlet UIBarButtonItem *barButton;
 NSArray *fieldsArray;

 fieldsArray = [[NSArray alloc] initWithObjects:birthdate,contNo, breed,homeAddress, coat,color, nil];

-(IBAction)next
 { 
 for (int i=0; i<[fieldsArray count]; i++)
 { if ([[fieldsArray objectAtIndex:i] isEditing] && i!=[fieldsArray count]-1)
   {
         [[fieldsArray objectAtIndex:i+1] becomeFirstResponder];
      if (i+1==[fieldsArray count]-1)
        {
            [barButton setTitle:@"Done"];
            [barButton setStyle:UIBarButtonItemStyleDone];
        }else
        {
            [barButton setTitle:@"Done"];
            [barButton setStyle:UIBarButtonItemStyleBordered];
        }
        break;
            }
    }
 }

-(IBAction) previous
{
for (int i=0; i<[fieldsArray count]; i++)
 {
   if ([[fieldsArray objectAtIndex:i] isEditing] && i!=0)
    {
        [[fieldsArray objectAtIndex:i-1] becomeFirstResponder];
        [barButton setTitle:@"Done"];
        [barButton setStyle:UIBarButtonItemStyleBordered];
        break;
    }
  }
 } 

-(void)textFieldDidBeginEditing:(UITextField *)textField 
{
[textField setInputAccessoryView:toolBar];
for (int i=0; i<[fieldsArray count]; i++)
{
    if ([fieldsArray objectAtIndex:i]==textField)
    {
        if (i==[fieldsArray count]-1)
        {
            [barButton setStyle:UIBarButtonItemStyleDone];
        }
    }
  }
 }

テーブルビューの外側のテキストフィールドを試してみると、次と前のテキストフィールドが正しく機能しています。

4

3 に答える 3

0
#pragma mark - UITextField Delegate

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
    HRCFormCell * currentCell = (HRCFormCell *) textField.superview.superview;
    NSIndexPath * currentIndexPath = [self.tableview indexPathForCell:currentCell];

    if (currentIndexPath.row != [self.questionsArray count] - 1) {

        NSIndexPath * nextIndexPath = [NSIndexPath indexPathForRow:currentIndexPath.row + 1 inSection:0];
        HRCFormCell * nextCell = (HRCFormCell *) [self.tableview cellForRowAtIndexPath:nextIndexPath];

        [self.tableview scrollToRowAtIndexPath:nextIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 

        [nextCell.textField becomeFirstResponder];
    }

    return YES;
}

次のコードを試してみてください。

于 2013-04-10T07:26:25.653 に答える
0

これは古い投稿ですが、ページ ランクが高いので、私の解決策を紹介します。

UIToolbar私は同様の問題を抱えていて、セクションを持つ動的なtableViewで次/前/完了機能を管理するためのサブクラスを作成することになりました: https://github.com/jday001/DataEntryToolbar

ツールバーをinputAccessoryViewテキスト フィールドとして設定し、その辞書に追加します。これにより、動的コンテンツであっても、それらを前後に循環させることができます。textField ナビゲーションが発生したときに独自の機能をトリガーしたい場合はデリゲート メソッドがありますが、タグやファーストレスポンダーのステータスを管理する必要はありません。

GitHub リンクには、実装の詳細に役立つコード スニペットとサンプル アプリがあります。フィールド内の値を追跡するには、独自のデータ モデルが必要です。

于 2015-01-26T21:45:36.287 に答える
0

テーブルビューセルのコンテンツビューにテキストフィールドを追加します。タグが追加されると増加するように、cellforrowatindexpath の textfield にタグを設定します。タグは「3+indexpath.row」の形式にすることができます

テキストで編集を開始します。現在のテキストフィールドのタグを見つけて、タグを保存します。次のインクリメント タグで、タグを使用してテキスト フィールドを検索し、ファーストレスポンダにします。

またはこのリンクを試してくださいUITableViewで次のUITextFieldをアクティブにする方法は? Fabiano Francesconi http://blog.encomiabile.it/2013/02/08/how-to-activate-next-uitextfield-in-uitableview-ios/によって提供された良い答えがあります

于 2013-04-10T07:31:01.373 に答える