[ios] Return 키를 누를 때 키보드를 숨기는 방법은 무엇입니까?

UITextfied텍스트 키보드를 클릭 하는 동안 사용 하고 있지만 return키를 누를 때 키보드가 사라지지 않습니다. 다음 코드를 사용했습니다.

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    return true;
}

resignfirstresponder 메소드가 작동하지 않습니다.



답변

다음 기능을 사용하여 앱이 키보드를 닫도록 할 수 있습니다

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    self.view.endEditing(true)
    return false
}

다음은이를 더 잘 설명하기위한 전체 예입니다.

//
//  ViewController.swift
//
//

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet var myTextField : UITextField

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        self.myTextField.delegate = self
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return false
    }
}

코드 소스 : http://www.snip2code.com/Snippet/85930/swift-delegate-sample


답변

이것의 return true일부는 텍스트 필드에 반환 허용 여부 만 알려줍니다.
키보드 (또는 첫 번째 응답자가 무엇이든)를 닫으려면 텍스트 필드에 수동으로 지시해야하며 이는 다음과 같이 수행됩니다 resignFirstResponder().

// Called on 'Return' pressed. Return false to ignore.

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder()
    return true
}


답변

  • UITextFieldDelegate클래스 선언에 추가하십시오 .

    class ViewController: UIViewController, UITextFieldDelegate
  • textfield프로그래밍 방식으로 연결 또는 작성

    @IBOutlet weak var userText: UITextField!
  • 뷰에서 위임 된 텍스트 필드가로드 될 때 뷰 컨트롤러를 설정하십시오.

    override func viewDidLoad() {
    super.viewDidLoad()
    self.userText.delegate = self
    }
    
  • 다음 기능을 추가하십시오

    func textFieldShouldReturn(userText: UITextField!) -> Bool {
        userText.resignFirstResponder()
        return true;
    }
    

    이 모든 것을 사용하면 키보드는 텍스트 필드 외부를 터치하고 return 키를 눌러 해제합니다.


답변

스위프트 4.2-델리게이트 불필요

UITextField에서 ” 1 차 조치 트리거 “에 대한 조치 아울렛을 작성하고 전달 된 송신자 매개 변수에서 첫 번째 응답자를 사임 할 수 있습니다.

액션 아울렛 만들기

@IBAction func done(_ sender: UITextField) {
    sender.resignFirstResponder()
}

매우 간단합니다.

( https://youtu.be/v6GrnVQy7iA 에 대해 알려 주신 Scott Smith의 60 초 비디오에 감사드립니다 )


답변

Simple Swift 3 솔루션 :이 기능을 텍스트 필드가있는 뷰 컨트롤러에 추가하십시오.

@IBAction func textField(_ sender: AnyObject) {
    self.view.endEditing(true);
}

그런 다음 보조 편집기를 열고 Main.storyboard가보기의 한쪽에 있고 원하는 view controller.swift 파일이 다른쪽에 있는지 확인하십시오. 텍스트 필드를 클릭 한 다음 오른쪽 유틸리티 패널에서 ‘연결 관리자 표시’탭을 선택하십시오. ‘끝낼 때 끝’에서 빠른 파일의 위 기능으로 드래그를 제어하십시오. 해당 장면의 다른 텍스트 필드에 대해 반복하고 동일한 기능에 연결하십시오.


답변

@RSC

나를 위해 Xcode 버전 6.2 (6C86e)의 중요한 추가 기능은 다음과 같습니다. override func viewDidLoad()

 self.input.delegate = self;

RSC 게시물을 찾을 때까지 몇 시간 동안 리턴 키를 사용하려고 시도했습니다. 감사합니다!

또한 화면의 다른 곳을 터치하면 키보드를 숨기려면 :

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
        self.view.endEditing(true);
    }


답변

자동 키보드 해제를 얻으려면이 코드를 사용자 정의 텍스트 필드 클래스의 메소드 중 하나에 넣습니다.

textField.addTarget(nil, action:"firstResponderAction:", forControlEvents:.EditingDidEndOnExit)

콘센트 이름을로 바꿉니다 textField.