2011-01-21 56 views
9

我有几个UITextFields在一个组中......我需要能够从第一个移动到最后一个,并在最后使它成为FirstResponder。如何让键盘移动到下一个文本域

我认为Next键会移动焦点,完成会导致它成为FirstResponder,但显然不是。

想法?

回答

12

您必须实现UITextFieldDelegate的ShouldReturn方法,并在那里创建下一个文本字段BecomeFirstResponder()。然后返回/下一个将带你到下一个领域。如果在最后一个文本字段中返回,您将在该字段上调用ResignFirstResponder()。

+0

谢谢......我一直在寻找什么...... – SpokaneDude 2011-01-22 14:33:49

0

您必须手动移动包含文本字段的视图,方法是将所需的文本字段放在键盘上方。

+0

Dimitris ...我不认为你理解我的问题...这不是视图的问题...它是当我点击键盘上的下一步时,我想焦点移动到下一个文本框...直到它到达最后一个,此时它变成FirstResponder并且键盘消失。 – SpokaneDude 2011-01-21 17:41:17

18

“已接受的答案”是正确的,但我认为有一点代码不会伤害刚接触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); 
} 

希望这可以帮助别人。

相关问题