Как заставить клавиатуру перейти к следующему текстовому полю - PullRequest
9 голосов
/ 21 января 2011

У меня есть несколько UITextFields, которые находятся в группе ... Мне нужно иметь возможность перейти от первого к последнему, а на последнем сделать его FirstResponder.

Я думал, что клавиша Next будет двигатьсяфокус, и Done заставит его стать FirstResponder, но, видимо, нет.

Идеи?

Ответы [ 3 ]

18 голосов
/ 29 июня 2012

«Принятый ответ» правильный, но я подумал, что небольшой код не повредит людям, которые плохо знакомы с MonoTouch.

public override void ViewDidLoad () {
    base.ViewDidLoad ();

    // make first text field have focus
    this.txtMake.BecomeFirstResponder();

    // make 'return' shift focus to next text field
    this.txtMake.ShouldReturn = delegate(UITextField textField) {
        this.txtModel.BecomeFirstResponder ();
        return true;
    };

    // make 'return' on last text field save and close the form
    this.txtModel.ShouldReturn = delegate(UITextField textField) {
        this.txtModel.ResignFirstResponder();
        this.SaveAndClose ();
        return true;
    };
}

private void SaveAndClose() {
    // todo: do something with your data

    // navigate back
    this.NavigationController.PopViewControllerAnimated(true);
}

Надеюсь, это поможет другим.

12 голосов
/ 22 января 2011

Вы должны реализовать метод ShouldReturn в UITextFieldDelegate и создать следующее текстовое поле BecomeFirstResponder ().Затем return / next приведет вас к следующему полю.Если в последнем текстовом поле нажата return, вы вызовете ResignFirstResponder () для этого поля.

0 голосов
/ 21 января 2011

Вы должны вручную переместить представление, содержащее текстовые поля, таким образом, чтобы нужное текстовое поле находилось над клавиатурой.

...