카테고리 없음

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() // 키보드 내리기
}

 

이렇게 해주면 넥스트 누르면 다음 텍스트로 넘어가고 캔슬 누르면 끝나서 키보드가 내려가고 던 버튼 또한 동일한 역활이다 ~ 

암튼 유용하게 사용하자 다음에도