テキストフィールドをクリックすると、キーボードが表示されます。ユーザーが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 {
....
}次に、以下のような方法で、または初期化している場所でTextFieldReturnキーがタップされたときにキーボードを非表示にするデリゲートを追加し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;
    ..
}これですべてです。さて、あなたは押したときに呼び出されなければなりません。returntextFieldShouldReturn
このクラスを定義し、テキストフィールドを設定してそのクラスを使用します。これにより、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
    }
}次に、ストーリーボードで行う必要があるのは、クラスを使用するフィールドを設定することだけです。