IPhoneでは、UITextField
を含むビューがあります。 UITextField
のクリアボタンをタップすると、UITextField
のテキストをクリアする代わりに、キーボードが非表示になりました。 iPadでは正常に動作しています。これを修正するにはどうすればよいですか?
フィールド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
。)
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;
}
Uがこれら2つを与えたことを確認してください
editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
TextFieldShouldClearは、カスタマイズが必要な場合にのみ必要です:-)
この方法で何かやっていますか?
たぶん、あなたはこのデリゲートメソッドでresignFirstResponderを呼び出しているのかもしれません。それがキーボードが却下される理由です。
デリゲートメソッドを実行して、正確に何をしているのかを確認してください。
この問題は、
yourTextField.clearButtonMode = UITextFieldViewModeNever;
この行を確認して削除するか、表示モードを変更してください。