在IOS中从返回键执行按钮单击

时间:2014-07-04 07:08:12

标签: ios iphone objective-c

我是iOS编程的新手,所以我有2个textFields和1个按钮,我希望textfield1中的返回键是下一个键,而textfield2中的键是完成键,当我按下这个键(下一个键)时,光标将在textfield2中,当我按下textfield2中的完成键时,它将执行按钮。我无法处理这些事件,任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:1)

让我们考虑您将文本字段链接到.h,创建2个IBOutlet,以及按钮的插座和操作:

@property (weak, nonatomic) IBOutlet UITextField *firstField;
@property (weak, nonatomic) IBOutlet UITextField *secondField;
@property (weak, nonatomic) IBOutlet UIButton *button;
- (IBAction)buttonPress:(id)sender;

在.m文件的viewDidLoad中,添加以下内容:

_firstFieldField.delegate = self;
_secondField.delegate = self;

返回.h文件,使您的班级符合UITextFieldDelegate协议:

@interface MyViewController : UIViewController <UITextFieldDelegate>

然后,在.m中,您可以实现以下方法,当您按下键盘上的“完成”按钮时将调用该方法:

-(BOOL)textFieldShouldReturn:(UITextField *)textField {

    if (textField == _usernameField) {

        _firstField becomeFirstResponder];
    }

    else if (textField == _passwordField) {

        [_secondField resignFirstResponder];
        [self buttonPress:_button];
    }

    return NO;
}

答案 1 :(得分:0)

您必须为此实施UITextFieldDelegate方法,并将文本字段的代理设置为selfself作为您的UIViewCiontroller):

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    if (textField == self.textField1) {
        [self.textField2 becomeFirstResponder];
    } else {
        [self buttonTapped:self.button];
    }
    return YES;
}

至于您在密钥上看到的内容,您可以将其设置为&#34;返回密钥&#34;在界面构建器

答案 2 :(得分:0)

带有标签的两个文本字段 - 1 &amp;的 2
一种用于文本字段的IBAction方法。

从您查看的文本字段中绑定方法。 - &GT; 退出结束事件

- (IBAction)returnAction:(id)sender
{
    if ([sender tag] == 1) {
       [textField2 becomeFirstResponder];
    } else {
       //YOUR_ACTION to perform;
    }
}

您也可以使用Delegate方法执行

-(BOOL)textFieldShouldReturn:(UITextField *)textField;

感谢。

答案 3 :(得分:0)

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    if (textField == self.textField1) {
        [self.textField2 becomeFirstResponder];
    } else {
      [button sendActionsForControlEvents:UIControlEventTouchUpInside];
    }
    return YES;
}