Tap on UITextField's clear button hides keyboard instead of clearing text

廉价感情. 提交于 2019-12-03 11:09:10

问题


In iPhone, I have a view which has a UITextField. When I tap on the clear button of UITextField's the keyboard dismissed instead of clearing the text in the UITextField. On an iPad it is working correctly. What can I do to fix this?


回答1:


Just clear the field, resignFirstResponder (if you want to hide keyboard) and return NO/false

Note: set Attributes inspector property of UITextField

Clear Button -> Appears while editing

so it will display the clear button while editing in the text field.

// Objective-C

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
    textField.text = @"";
    [textField resignFirstResponder];
    return NO;
}

// Swift

func textFieldShouldClear(textField: UITextField) -> Bool {
    textField.text = ""
    textField.resignFirstResponder()
    return false
}



回答2:


Try this code after you attach delegate of uitextifield

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
     return true;
}



回答3:


First, check all the code blocks that related to your UITextField (especially the code yourTextField.hidden = YES;)

Put break points and analyze every UITextField delegates that you implemented.

(textFieldDidEndEditing,textFieldShouldEndEditing,textFieldShouldReturn.etc.)

OR

Implement the textFieldShouldClear delegate and write the code here to visible and clear your UITextField

To do this, you have to set the clearButtonMode as below,

yourTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
yourTextField.delegate = self;

//For active keyboard again
[yourTextField becomeFirstResponder];

Then implement the textFieldShouldClear delegate

YourClass.h

    @interface className : UIViewController <UITextFieldDelegate>

YourClass.m

-(BOOL)textFieldShouldClear:(UITextField *)textField {
    yourTextField.hidden = NO;
    yourTextField.text = @"";
    return YES;
}



回答4:


Just make sure U've given these two

editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;

TextFieldShouldClear is needed only if you need to do some customizations :-)

Are you doing some thing in this method?

Maybe you are are calling resignFirstResponder in this delegate method, thats why the keyboard is getting dismissed.

Please go through the delegate methods, and check what u r doing exactly.




回答5:


This issue happened also if you have

yourTextField.clearButtonMode = UITextFieldViewModeNever;

Check this line and delete it or change view mode..



来源:https://stackoverflow.com/questions/11337961/tap-on-uitextfields-clear-button-hides-keyboard-instead-of-clearing-text

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!