본문 바로가기

iOS

iOS Keyboard 상단에 Done(완료) 버튼 추가하기

이번 포스팅은 iOS에서 return 키에 Done이 아닌




사진과 같이 Done버튼을 추가하는 방법에 대해 포스팅하겠습니다.




iOS에서는 안드로이드와는 달리 뒤로가기 키가 없습니다.


그래서 키보드가 보여지고 키보드를 가리기 위한 따로 처리를 해야합니다.



그래서 return 키를 Done으로 만들고 눌렸을 시에 키보드를 없애는


self.view.endEditing(true)

를 실행시켜서 키보드를 없애는데.



만약에 입력해야하는 길이가 여러줄이라 return키가 다음 줄로 넘기는 일을 해야한다거나,


다음 edit으로 넘어가는 등  키보드를 없애는 일 말고 다른 일을 해야하는 경우가 있습니다.



그러면 return 키 말고 다른 방법으로 키보드를 없애야합니다.



그 중 한 방법인 키보드가 띄어질 때 키보드 위에 View를 띄어서 그 안에 버튼을 넣어 클릭 되면 키보드를 없애느 방법이 있습니다.




여러 UI들에게는 accessoryView라는 속성이 있습니다.


UITableViewCell의 accessoryView는 오른쪽에 화살표가 띄어지는 기능을 합니다.



여기서 TextField와 TextView등 글을 수정하는 UI에는


설정된 View를 키보드가 띄어질때 함께 띄어지는 기능을 합니다.



그럼 위에 사진과 같이 Done버튼을 추가하는 방법을 알려드리겠습니다.


let toolBarKeyboard = UIToolbar()
toolBarKeyboard.sizeToFit()
let btnDoneBar = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(self.doneBtnClicked))
toolBarKeyboard.items = [btnDoneBar]
toolBarKeyboard.tintColor = #colorLiteral(red: 0.2980392157, green: 0.6862745098, blue: 0.3137254902, alpha: 1)


위 코드를 입력해 KeyBoard와 함께 사용 될 Toolbar만들고, 안에 UIBarButtonItem을 추가해 줍니다.


@IBAction func doneBtnClicked (sender: Any) {
        //click action...
        self.view.endEditing(true)
    }


Toolbar안에 BarItem이 클릭이 되면 실행시킬 이벤트를 추가합니다.


현재 코드에선 목적에 맞게 Keyboard를 없애는 코드를 추가했습니다.


textField.inputAccessoryView = toolBarKeyboard
textView.inputAccessoryView = toolBarKeyboard


코드와 같이 만든 ToolBar을 UITextField나 UITextView의 inputAccessoryView 속성을 통해서 추가해 줍니다.