2015-07-25 4 views
1

Я хотел бы выполнить код после ясная кнопка из UITextField была похлопал и после того, как текстовое поле было очищено.обратный вызов после того, как текстовое поле было очищено

textFieldShouldReturn: называется до текстовое поле очищается.

TextField: shouldChangeCharactersInRange: replacementString: не вызывается вообще, когда кнопка ясно прослушивается

Конечная цель состоит в том, что я поддерживаю некоторое графическое представление строки прослушиваются в том, когда он постучал. Я использовал textField: shouldChangeCharactersInRange: replacementString: для этого, и он работает хорошо, за исключением случаев, когда кнопка очистки нажата. (что должно стереть графическое представление).

+0

вы знаете, когда ясно, что должно произойти, так как [ 'textFieldShouldClear: '] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/#//apple_ref/occ/intfm/UITextFieldDelegate/textFieldShouldClear :). Почему бы не установить таймер на запуск через 0,1 секунды после возврата 'YES' из этого метода делегата и выполнить любую магию, которую вы хотели бы сделать после того, как текстовое поле очистится? –

+0

Спасибо за эту идею Майкл. Однако мне не нравится играть со таймерами, что всегда затрудняет отладку и обслуживание. Я поднял голос Артала. –

ответ

2

Вот эта идея: вы можете заменить кнопку очистки системы своей собственной кнопкой. Вам нужно будет обрабатывать очистку текстового поля самостоятельно (очень просто), а затем вы можете выполнять свои пользовательские анимации, а что нет.

кнопку Создать и установить его в качестве 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; 

Handle действие:

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

Отличная идея. Я беру это ! Благодарю. –

Смежные вопросы