2

我想做的是在 UITextField 中做一个自定义清除按钮,目前除了最后一部分外,我已经完成了所有工作。这是让它执行明确的行动。但是,我无法弄清楚如何清除它,只是它所在的文本字段。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
    [textField setTextColor:[UIColor colorWithRed:0.56f green:0.56f blue:0.56f alpha:1.00f]];
    [textField setFont:[UIFont systemFontOfSize:14]];
    textField.background = [UIImage imageNamed:@"whiteCell"];

    UIButton *btnColor = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnColor addTarget:self action:@selector(clearText:) forControlEvents:UIControlEventTouchUpInside];
    btnColor.frame = CGRectMake(0, 0, 25, 25);
    [btnColor setBackgroundImage:[UIImage imageNamed:@"clearBut"] forState:UIControlStateNormal];
    textField.rightView = btnColor;
    textField.rightViewMode = UITextFieldViewModeAlways;
    [textField addSubview:btnColor];


    return YES;
}

这就是我在 textField 中创建按钮的方式,并且它只在编辑时显示,正如你所看到的,我有它在调用,clearText但是我不确定如何发送我所在的当前 textField 名称以被清除clearText通话。

我知道我可以通过艰难的方式做到这一点,并为我的每个文本字段单独定义它,但我确信有一种更简单的方法可以解决这个问题,我只是还没有意识到。

4

2 回答 2

1

我建议子类化UITextField。这将不允许您在 Storyboard 中布置按钮,但在代码中或作为 .nib 文件应该可以工作。当然,您可以UITextfield在情节提要中使用子类。

在子类中添加 aUIButton作为子视图并在其操作方法调用中: self.text = @""

如果您还有其他问题,请告诉我。

于 2013-09-08T18:45:54.603 回答
0

鉴于您的按钮已作为子视图添加到文本字段中,您可以访问按钮超级视图属性中的文本字段:

- (void) clearText:(UIButton*)sender
{
    UITextField* textField = (UITextField*)sender.superview;
    textField.text = nil;
}
于 2016-04-11T09:19:19.170 回答