키보드 나올 때 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.swift
class 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분 정도면 끝날 것 같다고 생각한다.이 기사는 초보자라도 쉽게 할 수 있는데 앱을 만들 때 매우 중요한 부분이라고 생각합니다.

좋은 웹페이지 즐겨찾기