UIKeyboard的下一个按钮无法进入下一个UITextField。

5

我一直在尝试找出如何让UIKeyboard上的下一个按钮加载下一个UITextField。我有两个单元格,姓名和电子邮件,我想使用下一个按钮从姓名到电子邮件。

目前为止,我已经添加了以下内容:

//.h
 <UITextFieldDelegate>

我正在尝试将用户从名称传递到电子邮件,以此来解决问题。

//.m
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    customerNameTextField.delegate = self;
    customerEmailTextField.delegate = self;
//...

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (![customerNameTextField.text isEqualToString:@""]) {
        [customerNameTextField resignFirstResponder];
        [customerEmailTextField becomeFirstResponder];
    } else if (textField == customerEmailTextField) {
        // here you can define what happens
        // when user presses return on the email field
        // send request
    }
    return YES;
}

它进入了第一个if语句,然后使用resignFirstResponder将键盘从屏幕上删除,但是它没有使用becomeFirstResponder加载新的键盘。如何修复这个问题,请帮忙解决。

你确定 customerEmailTextField 不是 nil 吗? - Alexander
我必须更改if语句的第二部分...但我不太确定你指的是什么? - HurkNburkS
如果customerEmailTextField为nil,你的代码[customerEmailTextField becomeFirstResponder]显然不会起作用... - Alexander
1
如果你要告诉下一个字段成为firstresponder,我认为你不需要resignfirstresponder。此外,我认为你应该返回NO。 - Bushbert
我希望这不是一个太蠢的问题,但我该如何防止它变成nil?好的,刚刚看了您的建议,我现在要尝试一下。 - HurkNburkS
1个回答

12

这将从一个文本字段跳到下一个文本字段...

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == ist) {
        [second becomeFirstResponder];
    }
    else if (textField == second) {
        [third becomeFirstResponder];
    }

    else{
        [textField resignFirstResponder];
    }
    return YES;
}

我把返回值从YES改成了NO,然后它就正常工作了...不确定为什么...但是我想让大家知道。 - HurkNburkS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接