UIkeyboardDidShowNotification에서 textField를 키보드 높이로 이동하는 방법

6660 단어 XcodeSwiftiOS
LINE과 같은 채팅 응용 프로그램에서는 화면 아래에 텍스트의 입력란을 설정하고 이 입력란을 누르면 키보드가 올라가더라도 텍스트를 이동하는 입력란의 위치에 맞추어야 한다.
많은 시도를 했지만 다음 3단계는 간단할 것 같다.

StoryBoard의 UIVIew Controller에 UITableView 및 UITextField 구성


UITableView를 UIVIew Controller의 상부에 배치하고, UIText Field와 그 배경의 UIVIew, 보내기 단추의 UIButton을 UIVIew Controller의 하부에 설정합니다.
AutoLayout, UIVIew를 사용하여 치수를 375*40으로 고정합니다.UITableView를 변경할 수 있습니다.

viewDidLoad에서 NSNotificationCenter 설명


UITableView, UITextField, UIVIew, UIButton을 원본 코드와 Outlet으로 연결한 후 viewDidLoad에 다음과 같이 기술한다.
ViewController.swift
    override func viewDidLoad() {
      //省略

      // NSNotificationでキーボードを開けたイベントを取得
      let notificationCenter = NSNotificationCenter.defaultCenter()
      notificationCenter.addObserver(self, selector: #selector(self.openKeyboard(_:)), name: UIKeyboardDidShowNotification, object: nil)
    }
UIKeyboardDidShowNotification, 키보드가 표시되었음을 알립니다.

키보드를 열 때 실행되는 처리 설명


알림 센터에서 받은 userInfo 키보드의 크기를 확인하고 키보드의 높이self.textField.frame 등을 위로 이동합니다.
ViewController.swift
    //キーボードを開いたときに入力フィールドを移動させる
    func openKeyboard(notification: NSNotification) {
        if let userInfo = notification.userInfo {
            if let keyboard = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue{
                let keyBoardRect = keyboard.CGRectValue()

                self.textField.frame = CGRectMake(5, (self.view.frame.height - 28 - keyBoardRect.size.height), self.view.frame.width - 70, 28)
                self.sendView.frame = CGRectMake(0, (self.view.frame.height - 40 - keyBoardRect.size.height), self.view.frame.width, 40)
                self.sendButton.frame = CGRectMake(self.view.frame.width - 55, (self.view.frame.height - 28 - keyBoardRect.size.height), 50, 28)

            }
        }
    }
이로써 아이폰은 세로든 가로든 키보드의 높이에 따라 텍스트 입력란의 높이를 높일 수 있다.

좋은 웹페이지 즐겨찾기