我想在执行后,点击UITextField的清除按钮,并执行,清除文本字段后,执行代码。
textFieldShouldReturn:在清除文本字段之前称为。
轻按清除按钮时,根本不会调用textField:shouldChangeCharactersInRange:replacementString:
最终目标是我要在敲击字符串时保持一些图形表示。为此,我使用了textField:shouldChangeCharactersInRange:replacementString:,并且它工作得很好,除非点击了清除按钮。
(应删除图形表示)。
最佳答案
这是一个主意:您可以将系统清除按钮替换为自己的按钮。您需要自己清除文本字段(非常简单),然后才能执行自定义动画,而不能执行。
创建一个按钮并将其设置为rightView
的UITextField
:
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
}
}