【发布时间】:2010-10-02 20:16:41
【问题描述】:
我正在尝试做一些我认为很简单的事情。
我有一个带有两个 UITextField 的表单。我在第一个上使用 UIReturnKeyNext 样式。这个想法是,当用户填写第一个字段时,他们单击下一步,我将它们转换到下一个 UITextField。我见过其他应用程序可以做到这一点,而且效果非常好。但我不知道如何将焦点设置到下一个字段。
【问题讨论】:
标签: cocoa-touch
我正在尝试做一些我认为很简单的事情。
我有一个带有两个 UITextField 的表单。我在第一个上使用 UIReturnKeyNext 样式。这个想法是,当用户填写第一个字段时,他们单击下一步,我将它们转换到下一个 UITextField。我见过其他应用程序可以做到这一点,而且效果非常好。但我不知道如何将焦点设置到下一个字段。
【问题讨论】:
标签: cocoa-touch
简单。将 becomeFirstResponder 消息发送到您的其他文本字段。当另一个文本字段接受第一响应者状态时,它将接收来自键盘的信息。
例如:
//called when the next button is pressed
//Assume textField1, 2, and 3 are instances of UITextField
-(IBAction) nextPressed: (id) sender {
if ([textField1 isFirstResponder]) {
[textField2 becomeFirstResponder];
}
if ([textField2 isFirstResponder]) {
[textField3 becomeFirstResponder];
}
}
【讨论】:
上面的答案很有效,但您希望从原始文本字段中退出FirstResponder。
如果您不辞退第一响应者,当下一个字段成为第一响应者时,IOS 自动滚动调整将不起作用。 (键盘可能会覆盖下一个文本字段。)
-(IBAction) nextPressed: (id) sender {
//Resign first so that when the next field becomes firstResponder
//the text field will scroll into place if covered by the keyboard
[sender resignFirstResponder];
if ([textField1 isFirstResponder]) {
[textField2 becomeFirstResponder];
}
if ([textField2 isFirstResponder]) {
[textField3 becomeFirstResponder];
}
}
【讨论】: