web-dev-qa-db-ja.com

UITextFieldでReturnキーを押したときにキーボードを非表示にする方法は?

テキストフィールドをクリックすると、キーボードが表示されます。ユーザーがリターンキーを押したときに非表示にするにはどうすればよいですか?

144
aden

最初にUITextFieldのファイルデリゲートを作成します

@interface MYLoginViewController () <UITextFieldDelegate>

@end

次に、このメソッドをコードに追加します。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {        
    [textField resignFirstResponder];
    return YES;
}

self.textField.delegate = self;も追加します

273
Saurabh

viewDidLoadで宣言:

[yourTextField setDelegate:self];

次に、デリゲートメソッドのオーバーライドを含めます。

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}
59
oscar castellon

Swiftでこれを試してください、

ステップ1:デリゲートを自分としてtextFieldに設定します

textField.delegate = self

ステップ2:このUITextFieldDelegateをクラス宣言の下に追加し、

extension YourClassName: UITextFieldDelegate {
    func textFieldShouldReturn(textField: UITextField) -> Bool {
         textField.resignFirstResponder()
        return true
    }
}
16
Zaid Pathan

Swiftでは次のようにします。
最初にViewControllerでこのUITextFieldDelegateを実装します。

class MyViewController: UIViewController, UITextFieldDelegate {
....
}

次に、以下のようなTextFieldメソッドまたは初期化中のいずれかでリターンがタップされたときにキーボードを閉じるviewDidLoadにデリゲートを追加します。例えば.

override func viewDidLoad() {

    super.viewDidLoad()   
    myTextField.delegate = self
}

次に、このメソッドを追加します。

func textFieldShouldReturn(textField: UITextField) -> Bool {

    textField.resignFirstResponder()
    return true
}
13
Homam

スイフト4

View Controllerで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)
    }
}
1
dimpiax

「Primary Action Triggered」(UITextFieldを右クリック)をIBActionに接続し、ファーストレスポンダーを(委任なしで)辞任できます。例(Swift 4):

@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
    sender.resignFirstResponder()
    ...
}
1
Ferenc Kiss

UITextFieldのデリゲートを設定し、オーバーライド、textFieldShouldReturnメソッドを設定します。このメソッドでは、次の2行を記述するだけです。

[textField resignFirstResponder];
return YES;

それでおしまい。コードを書く前に、UITextFieldのデリゲートを設定し、プロパティウィンドウからReturnキータイプを「完了」に設定することを忘れないでください(command + shift + I)。

1
Matrix

これを試して、

[textField setDelegate: self];

次に、textFieldデリゲートメソッドで

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
1
Vineesh TP

OK、初心者にとっては少し混乱するかもしれないと思います。少なくとも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が呼び出されます。

0
Alex
[textField resignFirstResponder];

これを使って

0

このクラスを定義し、クラスを使用するようにテキストフィールドを設定すると、リターンが自動的に押されたときに非表示キーボード全体が自動化されます。

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
    }

}

次に、ストーリーボードで行う必要があるのは、クラスを使用するようにフィールドを設定することだけです。

enter image description here

0
iphaaw