이끼의 생각

[iOS Swift] 화면터치, Return/Enter 키보드 내리기 본문

Mobile App/iOS와 Swift

[iOS Swift] 화면터치, Return/Enter 키보드 내리기

IKKIson 2019. 4. 19. 07:52

텍스트필드에서 입력을 한 후 화면터치 외에도 키보드의 리턴키를 눌러서 키보드가 내려가는 상황이 가장 자연스럽고 많이 경험할 수 있는 상황이다. 리턴키를 누르는 상황, 리턴키 입력 이벤트 등의 비동기적인 이벤트에서 처리를 위해 델리게이트(Delegate) 프로토콜을 사용하면 된다.

텍스트 필드를 사용하는 경우 UITextFieldDelegate 프로토콜을 적용할 클래스에 상속 선언을 하면 TextField의 Outlet 변수를 delegate로 지정하여 원하는 함수들을 사용할 수 있다.

 

1. touchesBegan 설명 : https://ikkison.tistory.com/15

 

2. resignFirstResponder()

 

Notifies the receiver that it’s been asked to relinquish its status as first responder in its window.
resignFirstResponder

**Apple Developer : https://developer.apple.com/documentation/uikit/uiresponder/1621097-resignfirstresponder

 

텍스트필드의 현재 상태를 포기했다는 요청을 리시버에게 알려주는 뜻입니다.

즉, resignFirstResponder()로 활성화를 포기하면 키보드가 자동으로 내려가게 하는 방법입니다.

 

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var textField: UITextField! { 
    	didSet { 
        	textField.delegate = self 
        }
    }
    
/*
   	//위와 동일한 선언방법
    @IBOutlet weak var textField: UITextField!
    self.textField.delegate = self 
    */
    
	//생략

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        view.endEditing(true)
    }
    
    //리턴키 델리게이트 처리
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()//텍스트필드 비활성화
        return true
    }
}
Comments