テキストフィールドをクリックすると、キーボードが表示されます。ユーザーがReturnキーを押したときに非表示にするにはどうすればよいですか?
テキストフィールドをクリックすると、キーボードが表示されます。ユーザーがReturnキーを押したときに非表示にするにはどうすればよいですか?
回答:
まず、UITextFieldのファイルデリゲートを作成します。
@interface MYLoginViewController () <UITextFieldDelegate>
@end
次に、このメソッドをコードに追加します。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
また追加 self.textField.delegate = self;
でviewDidLoad
宣言します。
[yourTextField setDelegate:self];
次に、デリゲートメソッドのオーバーライドを含めます。
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
リマインダーの+1 。間違いなく忘れており、以前はコードが機能していませんでした。
Swiftでこれを試してください、
手順1:代理人を自分に設定するtextField
textField.delegate = self
ステップ2:クラス宣言の下にこのUITextFieldDelegateを追加します。
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
迅速にこのように
してください:まずあなたのViewController
実装でこれをUITextFieldDelegate
例えば
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
次に、以下のような方法で、または初期化している場所でTextField
Returnキーがタップされたときにキーボードを非表示にするデリゲートを追加しviewDidLoad
ます。たとえば
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
次に、このメソッドを追加します。
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
これを試して、
[textField setDelegate: self];
次に、textFieldデリゲートメソッドで
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
UITextField
ビューコントローラーのデリゲートを設定しfield.delegate = self
、次に:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
わかりました、初心者にとっては少し混乱するかもしれません。正解は、少なくともSwift4では、上記すべての組み合わせであると思います。
拡張機能を作成するか、これを使用するViewControllerを使用しますが、UITextFieldDelegateを実装してください。再利用のために、拡張機能を使用する方が簡単だと思いました。
extension UIViewController : UITextFieldDelegate {
...
}
しかし、代替案も同様に機能します:
class MyViewController: UIViewController {
...
}
textFieldShouldReturnメソッドを追加します(以前のオプションに応じて、拡張機能またはViewControllerのいずれか)。
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
viewDidLoadメソッドで、テキストフィールドのデリゲートをselfに設定します
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
これですべてです。さて、あなたは押したときに呼び出されなければなりません。return
textFieldShouldReturn
このクラスを定義し、テキストフィールドを設定してそのクラスを使用します。これにより、Enterキーが自動的に押されたときに非表示のキーボード全体が自動化されます。
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
次に、ストーリーボードで行う必要があるのは、クラスを使用するフィールドを設定することだけです。