카테고리 없음
swift 텍스트 필드 넘버 패드에 캔슬 던 버튼 넣기
kingarthur
2024. 9. 8. 19:48
가끔 텍스트 필드를 사용하면 필요한게 생긴다.
특히 던 버튼이나 캔슬 버튼이 넘버패드에는 없다... 암튼 왜일까 그래서 커스텀을 해줘야한다.
// Next와 Done 버튼을 각 텍스트 필드에 추가
private func addToolbarOnTextFields() {
// 첫 번째 텍스트 필드용 툴바 생성 (Cancel + Next 버튼)
let toolbarForInput = UIToolbar()
toolbarForInput.sizeToFit()
let cancelButtonForInput = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelButtonAction))
let nextButton = UIBarButtonItem(title: "Next", style: .plain, target: self, action: #selector(nextButtonAction))
let flexibleSpace = UIBarButtonItem.flexibleSpace()
toolbarForInput.setItems([cancelButtonForInput, flexibleSpace, nextButton], animated: false)
toolbarForInput.isUserInteractionEnabled = true
percentView.inputTextField.inputAccessoryView = toolbarForInput
// 두 번째 텍스트 필드용 툴바 생성 (Cancel + Done 버튼)
let toolbarForPercent = UIToolbar()
toolbarForPercent.sizeToFit()
let cancelButtonForPercent = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(cancelButtonAction))
let doneButton = UIBarButtonItem(title: "Done", style: .done, target: self, action: #selector(doneButtonAction))
toolbarForPercent.setItems([cancelButtonForPercent, flexibleSpace, doneButton], animated: false)
toolbarForPercent.isUserInteractionEnabled = true
percentView.percentTextField.inputAccessoryView = toolbarForPercent
}
@objc private func cancelButtonAction() {
// 현재 포커스된 텍스트 필드에서 포커스를 제거하여 키보드를 내리기
view.endEditing(true)
}
@objc private func nextButtonAction() {
percentView.percentTextField.becomeFirstResponder()
}
@objc private func doneButtonAction() {
percentView.percentTextField.resignFirstResponder() // 키보드 내리기
}
이렇게 해주면 넥스트 누르면 다음 텍스트로 넘어가고 캔슬 누르면 끝나서 키보드가 내려가고 던 버튼 또한 동일한 역활이다 ~
암튼 유용하게 사용하자 다음에도