我想在执行后,点击UITextField的清除按钮,并执行,清除文本字段后,执行代码

textFieldShouldReturn:在清除文本字段
之前称为

轻按清除按钮时,根本不会调用textField:shouldChangeCharactersInRange:replacementString:

最终目标是我要在敲击字符串时保持一些图形表示。为此,我使用了textField:shouldChangeCharactersInRange:replacementString:,并且它工作得很好,除非点击了清除按钮。
(应删除图形表示)。

最佳答案

这是一个主意:您可以将系统清除按钮替换为自己的按钮。您需要自己清除文本字段(非常简单),然后才能执行自定义动画,而不能执行。

创建一个按钮并将其设置为rightViewUITextField:

UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeSystem];
clearButton.frame = CGRectMake(0, 0, 45, 45);
clearButton.tintColor = myTextField.tintColor;
[clearButton setImage:[UIImage imageNamed:@"MY_CLEAR_IMAGE.png"] forState:UIControlStateNormal];
[clearButton addTarget:self action:@selector(onTextfieldClearButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

myTextField.rightView = clearButton;
myTextField.rightViewMode = UITextFieldViewModeWhileEditing;

处理动作:
-(void)onTextfieldClearButtonTouchUpInside:(UIButton*)clearButton
{
    if([clearButton.superview isKindOfClass:[UITextField class]])
    {
        ((UITextField*)(clearButton.superview)).text = @"";
        //TODO: YOUR MAGIC GOES HERE
    }
}

10-08 05:54