在为多个字段开始编辑时更改UITextField背景

时间:2013-05-11 20:39:46

标签: objective-c uitextfield first-responder

所以我不久前发现了这个帖子: Change UITextField background when editing begins

最佳答案是用于在用户编辑时更改textField的背景图像的绝佳资源。但是,我的问题是,如何使用MULTIPLE文本字段启用它?

具体来说(对于我的应用)我有一个登录名和密码字段。使用我将在下面发布的代码,我可以得到我的第一个文本字段,以便在用户点击它时正确地更改图像。但是,当用户点击键盘上的下一个文本字段或“下一个”选项时,我无法让下一个字段效仿。由于您只能有一个“textFieldShouldBeginEditing”实例以及结束,因此您需要为同一部分下的两个字段设置图像更改代码。但是,当我这样做时,我的字段在点击第一个字段时会发生变化,并且在点击第二个字段时都会恢复。

关于这个优秀社区的任何想法?

以下是一些代码:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    _userNameTextField.background = [UIImage imageNamed:@"login_field_highlighted@2x"];
    return YES;
    _passwordTextField.background = [UIImage imageNamed:@"password_field_highlighted@2x"];
    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    _userNameTextField.background = [UIImage imageNamed:@"login_field@2x"];
    return YES;
    _passwordTextField.background = [UIImage imageNamed:@"password_field@2x"];
    return YES;
}

- (BOOL) textFieldShouldReturn:(UITextField *)textField {
    NSLog(@"textFieldShouldReturn");
    if (textField == _userNameTextField) {
        [_passwordTextField becomeFirstResponder];
    } else if (textField == _passwordTextField) {
        [_passwordTextField resignFirstResponder];
    }

    return YES;

}

1 个答案:

答案 0 :(得分:2)

在每种方法中,您只需要检查哪个文本字段是针对的,就像在textFieldShouldReturn中一样:

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    if (textField == _userNameTextField) {
        _userNameTextField.background = [UIImage imageNamed:@"login_field@2x"];
    } else if (textField == _passwordTextField) {
        _passwordTextField.background = [UIImage imageNamed:@"password_field@2x];
    }
    return YES;
}