开发者

Action when the small cross button of UITextField is pressed

I can add a small cross button that is used to clear all the text in a single click in a UITextField with the following code.

textField.clearButtonMode = UITextFieldViewModeWhileEditing;

I also implemented UITextFieldDelegate.

I want to activate/deactivate the right bar button of the UINavigationBar according to the changes in my UITextField. The rule is simple: if the text field has at least one character, just enable the button, else disable it.

I implemented the UITextField's delegate method textField:shouldChangeCharactersInRange: to constantly check the requirement and update the status of the button.

Now my problem is, when I click the small cross button on the text field, the method textField:shouldChangeCharactersInRange: is not called. So the required action is missing. How can I identify the hit event of the clear button?

Some pictures to show what I'm talking about.

Initial stage: here, the "Done" button is disabled because there are no letters in the text field

Action when the small cross button of UITextField is pressed

When typing a letter, the "Done" button is enabled开发者_如何转开发

Action when the small cross button of UITextField is pressed

Now, if I click on the clear button, the "Done" button is still enabled. This is wrong.

Action when the small cross button of UITextField is pressed


Use the delegate method textViewShouldClear::

Asks the delegate if the text field’s current contents should be removed.

- (BOOL)textFieldShouldClear:(UITextField *)textField

Parameters

textField

The text field containing the text.

Return Value

YES if the text field’s contents should be cleared; otherwise, NO.

Discussion

The text field calls this method in response to the user pressing the built-in clear button. (This button is not shown by default but can be enabled by changing the value in the clearButtonMode property of the text field.) This method is also called when editing begins and the clearsOnBeginEditing property of the text field is set to YES.

Implementation of this method by the delegate is optional. If it is not present, the text is cleared as if this method had returned YES. Availability

* Available in iOS 2.0 and later.

Declared In UITextField.h


You can use textFieldShouldClear: delegate method to handle when user taps on clear button.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜