web-dev-qa-db-ja.com

TextFieldのクリアボタンをタップすると、テキストをクリアする代わりにキーボードを非表示にします

IPhoneでは、UITextFieldを含むビューがあります。 UITextFieldのクリアボタンをタップすると、UITextFieldのテキストをクリアする代わりに、キーボードが非表示になりました。 iPadでは正常に動作しています。これを修正するにはどうすればよいですか?

19
Mad

フィールドresignFirstResponder(キーボードを非表示にする場合)をクリアして、NO/falseを返すだけです。

注:UITextFieldの属性インスペクタープロパティを設定します

クリアボタン->編集中に表示

そのため、テキストフィールドでの編集中にクリアボタンが表示されます。

// Objective-C

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

//スウィフト

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

Uitextifieldのデリゲートをアタッチした後、このコードを試してください

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

最初に、UITextFieldに関連するすべてのコードブロック(特にコードyourTextField.hidden = YES;

ブレークポイントを設定し、実装したすべてのUITextFieldデリゲートを分析します。

textFieldDidEndEditingtextFieldShouldEndEditingtextFieldShouldReturn.etc

OR

textFieldShouldClearデリゲートを実装し、ここにコードを記述してUITextFieldを表示およびクリアします

これを行うには、clearButtonModeを以下のように設定する必要があります。

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

//For active keyboard again
[yourTextField becomeFirstResponder];

次に、textFieldShouldClearデリゲートを実装します

YourClass.h

    @interface className : UIViewController <UITextFieldDelegate>

YourClass.m

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

Uがこれら2つを与えたことを確認してください

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

TextFieldShouldClearは、カスタマイズが必要な場合にのみ必要です:-)

この方法で何かやっていますか?

たぶん、あなたはこのデリゲートメソッドでresignFirstResponderを呼び出しているのかもしれません。それがキーボードが却下される理由です。

デリゲートメソッドを実行して、正確に何をしているのかを確認してください。

5
Sj.

この問題は、

yourTextField.clearButtonMode = UITextFieldViewModeNever;

この行を確認して削除するか、表示モードを変更してください。

2