리턴 키를 누를 때 키보드를 빠르게 숨기는 방법
사용하고 있다UITextfied
문자화된 키보드를 클릭할 때는 표시되지만 키를 눌렀을 때는 키보드가 사라지지 않습니다.다음 코드를 사용했습니다.
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
}
대리인이 필요 없음
"Primary Action Triggered"에 대한 액션 아웃렛을 UITextField에서 만들고 전달된 sender 파라미터에 대해 first responder를 재서명할 수 있습니다.
@IBAction func done(_ sender: UITextField) {
sender.resignFirstResponder()
}
아주 심플해요.
Scott Smith의 60초짜리 비디오 덕분에 이 일에 대해 힌트를 얻을 수 있었습니다.
더하다
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; }
텍스트 필드 밖에서 터치하거나 리턴 키를 누르면 키보드가 꺼집니다.
모든 UIViewController에 동일한 기능을 추가하는 것은 싫습니다.UIViewController를 확장하여 UITextFieldDelegate를 지원함으로써 기본 동작인 "return pressed"를 제공할 수 있습니다.
extension UIViewController: UITextFieldDelegate{
public func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true;
}
}
새로운 UIViewController와 UITextField를 작성할 때는 UIViewController에 1개의 라인 코드를 작성하기만 하면 됩니다.
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self
}
Main.storyboard에서 대리인을 후크하여 이 한 줄 코드를 생략할 수도 있습니다. ("ctrl"을 사용하여 UITextField에서 UIViewController로 드래그)
심플한 Swift 3 솔루션:텍스트 필드가 있는 뷰 컨트롤러에 다음 기능을 추가합니다.
@IBAction func textField(_ sender: AnyObject) {
self.view.endEditing(true);
}
그런 다음 보조 편집기를 열고 Main.storyboard가 보기 한쪽에 있고 원하는 보기 controller.swift 파일이 다른 쪽에 있는지 확인합니다.텍스트 필드를 클릭한 다음 우측 유틸리티 패널 '연결 검사기 표시' 탭에서 선택하십시오.빠른 파일의 '종료 시 종료'에서 위 기능으로 드래그하십시오.해당 씬(scene)의 다른 텍스트 필드에 대해 반복하고 동일한 기능에 연결합니다.
@RSC
6.는 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
.
스토리보드를 주로 사용하여 여러 텍스트 필드를 쉽게 만들 수 있는 또 다른 방법은 다음과 같습니다.
@IBAction func resignKeyboard(sender: AnyObject) {
sender.resignFirstResponder()
}
를 에 합니다.Did End On Exit
각 분야의 이벤트
다음은 평종류의 코멘트에 대한 Swift 3.0 업데이트입니다.
textField.addTarget(nil, action:Selector(("firstResponderAction:")), for:.editingDidEndOnExit)
RSC에서 클래스를 시작할 것을 제안합니다.
import Foundation
import UIKit
// Don't forget the delegate!
class ViewController: UIViewController, UITextFieldDelegate {
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@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;
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldShouldReturn(textField: UITextField!) -> Bool {
self.view.endEditing(true);
return false;
}
}
사용자가 텍스트 키보드의 [Done]버튼을 탭하면 [Did End On Exit]이벤트가 생성됩니다.이 때 텍스트필드에 제어를 포기하도록 지시하여 키보드가 사라지도록 해야 합니다.그러기 위해서는 컨트롤러 클래스에 액션메서드를 추가해야 합니다.ViewController.swift를 선택하여 다음 작업 방법을 추가합니다.
@IBAction func textFieldDoneEditing(sender: UITextField) {
sender.resignFirstResponder()}
프로젝트 탐색기에서 Main.storyboard를 선택하고 연결 검사기를 불러옵니다.종료 시 종료 옆의 원에서 스토리보드의 노란색 뷰 컨트롤러 아이콘으로 끌어서 놓습니다.방금 추가한 단일 작업의 이름을 포함하는 작은 팝업 메뉴가 나타납니다.textFieldDoneEditing 액션을 클릭하여 선택합니다.
스위프트 3
아래 코드를 VC에 추가해 주세요.
//hide keyboard when user tapps on return key on the keyboard
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true);
return false;
}
효과가 있다
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(handleScreenTap(sender:)))
self.view.addGestureRecognizer(tap)}
그러면 이 기능을 사용합니다.
func handleScreenTap(sender: UITapGestureRecognizer) {
self.view.endEditing(true)
}
재빠르다
from from from의 옵션 UITextFieldDelegate
.
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.endEditing(false)
}
false
그 분야에서 사임을 요청할 수 있다는 것을 의미합니다. true
– 제 – – – 。
텍스트 필드 관련 코드를 쓰는 뷰 컨트롤러에 textField 대리인이 설정되어 있는지 확인합니다.
self.textField.delegate = self
이것을 어디에 두어도 되지만, UIButton에는 넣을 수 없습니다.
func TextFieldEndEditing(text fiend name: UITextField!) -> Bool
{
return (false)
}
이 코드를 버튼에 입력할 수 있습니다(예를 들어).
self.view.endEditing(true)
이것은 나에게 효과가 있었다.
사용 중인 뷰 컨트롤러:
//suppose you are using the textfield label as this
@IBOutlet weak var emailLabel: UITextField!
@IBOutlet weak var passwordLabel: UITextField!
//then your viewdidload should have the code like this
override func viewDidLoad() {
super.viewDidLoad()
self.emailLabel.delegate = self
self.passwordLabel.delegate = self
}
//then you should implement the func named textFieldShouldReturn
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
// -- then, further if you want to close the keyboard when pressed somewhere else on the screen you can implement the following method too:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true);
}
이 함수를 호출하려면 UITExtended를 뷰 컨트롤러와 연결해야 합니다.
올인원 키보드 숨기기 및 키보드 열기 화면 이동: Swift 5
override func viewDidLoad() {
super.viewDidLoad()
let tap = UITapGestureRecognizer(target: self, action: #selector(taped))
view.addGestureRecognizer(tap)
NotificationCenter.default.addObserver(self, selector: #selector(KeyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(KeyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(true)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func taped(){
self.view.endEditing(true)
}
@objc func KeyboardWillShow(sender: NSNotification){
let keyboardSize : CGSize = ((sender.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.size)!
if self.view.frame.origin.y == 0{
self.view.frame.origin.y -= keyboardSize.height
}
}
@objc func KeyboardWillHide(sender : NSNotification){
let keyboardSize : CGSize = ((sender.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size)!
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
언급URL : https://stackoverflow.com/questions/24180954/how-to-hide-keyboard-in-swift-on-pressing-return-key
'programing' 카테고리의 다른 글
리모트에 존재하지 않는 로컬 추적 브랜치를 삭제하려면 어떻게 해야 합니까? (0) | 2023.04.16 |
---|---|
모달 View Controller 프레젠테이션 스타일이 UIModal Presentation FormSheet인 경우 iPad 키보드가 꺼지지 않습니다. (0) | 2023.04.16 |
sql server #region (0) | 2023.04.16 |
파일 연결을 해제하지 못했습니다.다시 해볼까? (0) | 2023.04.11 |
Excel을 사용한 CSV 파일의 따옴표 및 구분자 이스케이프 (0) | 2023.04.11 |