19

iPhone には、UITextField. のクリア ボタンをタップするとUITextField、 のテキストがクリアされる代わりに、キーボードが閉じられますUITextField。iPadでは正常に動作しています。これを修正するにはどうすればよいですか?

4

5 に答える 5

48

フィールドをクリアして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
}
于 2014-02-14T05:57:54.320 に答える
11

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

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
     return true;
}
于 2012-07-05T06:18:51.617 に答える
10

まず、あなたに関連するすべてのコードブロックをチェックしてくださいUITextField(特にコードyourTextField.hidden = YES;

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

( textFieldDidEndEditing, textFieldShouldEndEditing, textFieldShouldReturn.etc. )

また

textFieldShouldClearデリゲートを実装し、ここにコードを記述して、UITextField

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

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

//For active keyboard again
[yourTextField becomeFirstResponder];

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

YourClass.h

    @interface className : UIViewController <UITextFieldDelegate>

あなたのクラス.m

-(BOOL)textFieldShouldClear:(UITextField *)textField {
    yourTextField.hidden = NO;
    yourTextField.text = @"";
    return YES;
}
于 2012-07-05T05:08:30.170 に答える
5

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

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

TextFieldShouldClearは、いくつかのカスタマイズを行う必要がある場合にのみ必要です:-)

このメソッドで何かをしていますか?

このデリゲート メソッドで rejectFirstResponder を呼び出している可能性があります。そのため、キーボードが閉じられています。

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

于 2012-07-06T09:15:11.367 に答える