iPhone には、UITextField
. のクリア ボタンをタップするとUITextField
、 のテキストがクリアされる代わりに、キーボードが閉じられますUITextField
。iPadでは正常に動作しています。これを修正するにはどうすればよいですか?
5 に答える
フィールドをクリアして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
}
uitextifield のデリゲートをアタッチした後、このコードを試してください
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
return true;
}
まず、あなたに関連するすべてのコードブロックをチェックしてください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;
}
Uがこれら2つを与えたことを確認してください
editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
TextFieldShouldClearは、いくつかのカスタマイズを行う必要がある場合にのみ必要です:-)
このメソッドで何かをしていますか?
このデリゲート メソッドで rejectFirstResponder を呼び出している可能性があります。そのため、キーボードが閉じられています。
デリゲート メソッドを調べて、正確に何をしているのかを確認してください。