키보드 나올 때 UITextField 숨기지 마세요.
12608 단어 Swift
개시하다
UITExtField, UITExtView는 가까스로 편집할 수 있으며 기본적으로 키보드가 표시되면 숨겨집니다.슬프다.
환경을 실현하다
Swift: version 4.1
Xcode: version 9.3
Swift는 아마 3계도 움직일 거예요.
설치 방법
텍스트에 항목을 작성하십시오.이번에는 Play ground가 아니라 xcode Project 구현입니다.
① Storyboard에 설치된 구성
이번에는 이해하기 쉽게 4개의 텍스필드를 구성했다.맨 아래가 기본값이면 키보드를 표시한 후 숨깁니다.
② Outlet 연결 설치
Outlet 연결 준비마지막 activeTextField는 현재 편집 중인 TextField를 항상 대입합니다. 키보드를 호출할 때마다 이 값을 이용하여 화면을 위로 이동시키기 때문에 절대적으로 필요합니다.
ViewController.swift @IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: UITextField!
@IBOutlet weak var thirdTextField: UITextField!
@IBOutlet weak var fourthTextField: UITextField!
fileprivate var activeTextField: UITextField?
③ delegate 설정 설치
ViewController의 클래스가 UITExt Field Delegate를 상속하도록 합니다.
ViewController.swiftclass ViewController: UIViewController, UITextFieldDelegate {
viewDidLoad를 사용하여 delegate를 설정합니다.
ViewController.swift override func viewDidLoad() {
super.viewDidLoad()
//setup delegate
self.firstTextField.delegate = self
self.secondTextField.delegate = self
self.thirdTextField.delegate = self
self.fourthTextField.delegate = self
}
④ 주요 함수의 실현
두 개의 주요 함수를 준비하다.키보드가 나타날 때와 키보드가 숨겨질 때 쓰는 겁니다.
ViewController.swift @objc private func handleKeyboardWillShowNotification(_ notification: Notification) {
let userInfo = notification.userInfo //この中にキーボードの情報がある
let keyboardSize = (userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let keyboardY = self.view.frame.size.height - keyboardSize.height //画面全体の高さ - キーボードの高さ = キーボードが被らない高さ
let editingTextFieldY: CGFloat = (self.activeTextField?.frame.origin.y)!
if editingTextFieldY > keyboardY - 60 {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: self.view.frame.origin.y - (editingTextFieldY - (keyboardY - 60)), width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
}
ViewController.swift @objc private func handleKeyboardWillHideNotification(_ notification: Notification) {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
⑤ NotificationCenter 설치
마지막으로 키보드가 호출될 때 주 함수가 호출되도록 설정합니다.이번에는 NotificationCenter를 사용한 것입니다.
ViewController.swift override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillShowNotification(_:)), name: .UIKeyboardWillShow, object: nil)
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillHideNotification(_:)), name: .UIKeyboardWillHide, object: nil)
}
소스 코드
만들어진 참고품.게재하다.자유롭게 다운로드하여 사용하세요.
응용 프로그램
이textField는제작된애플리케이션에 따라다양한곳에서활용될 가능성이있으며,그렇게 말한다면뷰컨트롤러를하나둘로구현하기는힘들고지루하다고 할 수 있다.
이런 상황에서 이 기능을 갖춘 ViewController를 만들고 그 기능을 계승하는 형식으로 사용하는 것이 가장 똑똑하다고 생각합니다.
여기서 시행했던 글을 참고로 실었으니 가능하면 체크해주세요.
여기.
그게 다야.
나는 습관이 된 사람이 10분 정도면 끝날 것 같다고 생각한다.이 기사는 초보자라도 쉽게 할 수 있는데 앱을 만들 때 매우 중요한 부분이라고 생각합니다.
Reference
이 문제에 관하여(키보드 나올 때 UITextField 숨기지 마세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koooooo/items/861c82a36ae7954fcde7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Swift: version 4.1
Xcode: version 9.3
Swift는 아마 3계도 움직일 거예요.
설치 방법
텍스트에 항목을 작성하십시오.이번에는 Play ground가 아니라 xcode Project 구현입니다.
① Storyboard에 설치된 구성
이번에는 이해하기 쉽게 4개의 텍스필드를 구성했다.맨 아래가 기본값이면 키보드를 표시한 후 숨깁니다.
② Outlet 연결 설치
Outlet 연결 준비마지막 activeTextField는 현재 편집 중인 TextField를 항상 대입합니다. 키보드를 호출할 때마다 이 값을 이용하여 화면을 위로 이동시키기 때문에 절대적으로 필요합니다.
ViewController.swift @IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: UITextField!
@IBOutlet weak var thirdTextField: UITextField!
@IBOutlet weak var fourthTextField: UITextField!
fileprivate var activeTextField: UITextField?
③ delegate 설정 설치
ViewController의 클래스가 UITExt Field Delegate를 상속하도록 합니다.
ViewController.swiftclass ViewController: UIViewController, UITextFieldDelegate {
viewDidLoad를 사용하여 delegate를 설정합니다.
ViewController.swift override func viewDidLoad() {
super.viewDidLoad()
//setup delegate
self.firstTextField.delegate = self
self.secondTextField.delegate = self
self.thirdTextField.delegate = self
self.fourthTextField.delegate = self
}
④ 주요 함수의 실현
두 개의 주요 함수를 준비하다.키보드가 나타날 때와 키보드가 숨겨질 때 쓰는 겁니다.
ViewController.swift @objc private func handleKeyboardWillShowNotification(_ notification: Notification) {
let userInfo = notification.userInfo //この中にキーボードの情報がある
let keyboardSize = (userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let keyboardY = self.view.frame.size.height - keyboardSize.height //画面全体の高さ - キーボードの高さ = キーボードが被らない高さ
let editingTextFieldY: CGFloat = (self.activeTextField?.frame.origin.y)!
if editingTextFieldY > keyboardY - 60 {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: self.view.frame.origin.y - (editingTextFieldY - (keyboardY - 60)), width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
}
ViewController.swift @objc private func handleKeyboardWillHideNotification(_ notification: Notification) {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
⑤ NotificationCenter 설치
마지막으로 키보드가 호출될 때 주 함수가 호출되도록 설정합니다.이번에는 NotificationCenter를 사용한 것입니다.
ViewController.swift override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillShowNotification(_:)), name: .UIKeyboardWillShow, object: nil)
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillHideNotification(_:)), name: .UIKeyboardWillHide, object: nil)
}
소스 코드
만들어진 참고품.게재하다.자유롭게 다운로드하여 사용하세요.
응용 프로그램
이textField는제작된애플리케이션에 따라다양한곳에서활용될 가능성이있으며,그렇게 말한다면뷰컨트롤러를하나둘로구현하기는힘들고지루하다고 할 수 있다.
이런 상황에서 이 기능을 갖춘 ViewController를 만들고 그 기능을 계승하는 형식으로 사용하는 것이 가장 똑똑하다고 생각합니다.
여기서 시행했던 글을 참고로 실었으니 가능하면 체크해주세요.
여기.
그게 다야.
나는 습관이 된 사람이 10분 정도면 끝날 것 같다고 생각한다.이 기사는 초보자라도 쉽게 할 수 있는데 앱을 만들 때 매우 중요한 부분이라고 생각합니다.
Reference
이 문제에 관하여(키보드 나올 때 UITextField 숨기지 마세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koooooo/items/861c82a36ae7954fcde7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@IBOutlet weak var firstTextField: UITextField!
@IBOutlet weak var secondTextField: UITextField!
@IBOutlet weak var thirdTextField: UITextField!
@IBOutlet weak var fourthTextField: UITextField!
fileprivate var activeTextField: UITextField?
class ViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
//setup delegate
self.firstTextField.delegate = self
self.secondTextField.delegate = self
self.thirdTextField.delegate = self
self.fourthTextField.delegate = self
}
@objc private func handleKeyboardWillShowNotification(_ notification: Notification) {
let userInfo = notification.userInfo //この中にキーボードの情報がある
let keyboardSize = (userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
let keyboardY = self.view.frame.size.height - keyboardSize.height //画面全体の高さ - キーボードの高さ = キーボードが被らない高さ
let editingTextFieldY: CGFloat = (self.activeTextField?.frame.origin.y)!
if editingTextFieldY > keyboardY - 60 {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: self.view.frame.origin.y - (editingTextFieldY - (keyboardY - 60)), width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
}
@objc private func handleKeyboardWillHideNotification(_ notification: Notification) {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseIn, animations: {
self.view.frame = CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)
}, completion: nil)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillShowNotification(_:)), name: .UIKeyboardWillShow, object: nil)
notificationCenter.addObserver(self, selector: #selector(self.handleKeyboardWillHideNotification(_:)), name: .UIKeyboardWillHide, object: nil)
}
만들어진 참고품.게재하다.자유롭게 다운로드하여 사용하세요.
응용 프로그램
이textField는제작된애플리케이션에 따라다양한곳에서활용될 가능성이있으며,그렇게 말한다면뷰컨트롤러를하나둘로구현하기는힘들고지루하다고 할 수 있다.
이런 상황에서 이 기능을 갖춘 ViewController를 만들고 그 기능을 계승하는 형식으로 사용하는 것이 가장 똑똑하다고 생각합니다.
여기서 시행했던 글을 참고로 실었으니 가능하면 체크해주세요.
여기.
그게 다야.
나는 습관이 된 사람이 10분 정도면 끝날 것 같다고 생각한다.이 기사는 초보자라도 쉽게 할 수 있는데 앱을 만들 때 매우 중요한 부분이라고 생각합니다.
Reference
이 문제에 관하여(키보드 나올 때 UITextField 숨기지 마세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/koooooo/items/861c82a36ae7954fcde7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
나는 습관이 된 사람이 10분 정도면 끝날 것 같다고 생각한다.이 기사는 초보자라도 쉽게 할 수 있는데 앱을 만들 때 매우 중요한 부분이라고 생각합니다.
Reference
이 문제에 관하여(키보드 나올 때 UITextField 숨기지 마세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koooooo/items/861c82a36ae7954fcde7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)