0

2 つのフィールドを含むビュー コントローラーをセットアップしました。前へと次へのボタンがあるキーボードの上にツールバーを実装しました。

フィールドのリストの配列があります。

    // Setup array of listed fields
textFields = [[NSArray alloc] initWithObjects:usernameField,passwordField, nil];

ツールバー

(id)initWithTextField:(UITextField*)textField
{
    self = [super initWithFrame:CGRectMake(0, 250, 320, 40)];
    if (self) {

        inputToolBar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
        doneButton= [[UIBarButtonItem alloc]
                     initWithTitle:@"Done"
                     style:UIBarButtonItemStyleDone
                     target:self
                     action:@selector(performdone:)];
        nextButton= [[UIBarButtonItem alloc]
                     initWithTitle:@"Next"
                     style:UIBarButtonItemStyleBordered
                     target:self
                     action:@selector(nextButtonMethod:)];
        nextButton.tintColor = [UIColor blackColor];
        previousButton= [[UIBarButtonItem alloc]
                     initWithTitle:@"Previous"
                     style:UIBarButtonItemStyleBordered
                     target:self
                     action:@selector(previousButtonMethod:)];
        previousButton.tintColor = [UIColor blackColor];

        inputToolBar.barStyle=UIBarStyleDefault;
        UIBarButtonItem* flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        [inputToolBar setItems:[NSArray arrayWithObjects:previousButton,nextButton,flexSpace,doneButton,Nil] animated:NO];
        [self addSubview:inputToolBar];
    }
    return self;
}

ツールバーへのフィールド呼び出し:

[self.usernameField setInputAccessoryView:myInputAccessoryView];

nextButtonMethod と previousButtonMethod のメソッドに何を追加して、カーソルを配列リストの次のフィールドに移動するかを知りたいです。どうすればこれを達成できますか?

4

3 に答える 3

0

次のフレームワークがあなたのケースに役立つかもしれません..

https://github.com/wzbozon/DKKeyboardView または https://github.com/SimonBS/BSKeyboardControls

かなり簡単なもの。

于 2013-02-16T01:30:39.173 に答える
0

したがって、私がお勧めすることの 1 つは、ビュー コントローラーを設定して xib を作成し、組み込みの UITextField の setInputAcessoryView を使用することです。

私が作成したサンプルでは、​​xib を使用してカスタム ビュー コントローラーを作成し、ボタンの外観を正確に設定してから、そのビューを InputAccessoryView にロードしました。この方法でロードすると、ボタンをキーボードで上下にアニメーション化できます。辞任またはファーストレスポンダーになったとき。

-(void)createFunction{

  [myCustomTextField setDelegate:self];
  [myCustomTextField setInputView:nil]; 
  //Don't have to set this unless you have a custom view
  [myCustomTextField setInputAccessoryView:myCustomInputButtonViewController.view];

}

次に、AccessoryView ビュー コントローラーからデリゲート メソッドをセットアップします。ボタンが押されたときに入力を取得し、それに応じて応答できるようにしました。

-(void)pressedLeftActionButtonFromEXT{
NSLog(@"Pressed Left Action");
NSInteger nextTag = activeTextField.tag - 1;
// Try to find next responder
UIResponder* nextResponder = [activeTextField.superview viewWithTag:nextTag];
if (nextResponder) {
    // Found next responder, so set it.
    [nextResponder becomeFirstResponder];
  } else {
    // Not found, so remove keyboard.
    [activeTextField resignFirstResponder];
  }

}

これは、私が作成したサンプル プロジェクトの正確なコード行です。ご想像のとおり、他の方向はちょうど逆です。

また、インターフェイスに UITextField * activeTextField があったので、いつ textField がオンになっているかを判断し、それに応じて応答することができました。

これが役立つことを願っています。これがあまりよくない場合はお知らせください。より明確にしようとします。私はあなたが抱えているこの問題を解決できることを知っています。

グッドランク^^

于 2013-02-16T01:37:31.897 に答える
0
[textFieldInstance becomeFirstResponder];

そのフィールドにカーソルが置かれます。適切なテキストフィールド インスタンスを選択する方法を知っていることを願っています。

于 2013-02-16T01:17:39.517 に答える