반응형
UITextField 컨트럴을 사용하여 숫자를 입력 받을 경우 입력된 숫자에 자동으로 콤마를 추가되도록 구현해 보았다. 또한 숫자 이외의 문자입력 방지 및 Int형 변환처리등을 구현하였다.
import Foundation
import UIKit
class MainViewController: UIViewController {
@IBOutlet weak var tfAmount: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// 키보드 타입 설정 (storyboard에서 설정 가능)
tfAmount.delegate = self
tfAmount.keyboardType = .numbersAndPunctuation // 숫자와 구두점이 포함된 키보드로 설정
tfAmount.clearButtonMode = .whileEditing // 편집하는 동안 'clear' 버튼 활성화
tfAmount.clearsOnBeginEditing = true // 편집 시작 시 내용 지우기
}
import UIKit
extension MainViewController : UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == self.tfJJRefundAmount {
// 숫자 이외의 문자는 입력되지 않도록 처리
let invalidCharacters = CharacterSet.decimalDigits.inverted
return string.rangeOfCharacter(from: invalidCharacters) == nil
}
return true
}
func textFieldDidChangeSelection(_ textField: UITextField) {
if textField == self.tfAmount {
// 입력시 자동으로 ',' 추가
if let text = textField.text?.replacingOccurrences(of: ",", with: "") {
if let number = Int(text) {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
textField.text = formatter.string(from: NSNumber(value: number))
self.tfAmount.tag = number // Int형 값을 tag에 저장.
}
}
}
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
if textField == self.tfAmount && textField.text?.isEmpty == true {
// 필요한 경우 추가 처리
}
return true
}
func textFieldShouldClear(_ textField: UITextField) -> Bool {
textField.text = ""
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder() // 키보드 내리기
if textField == self.tfAmount && textField.text?.isEmpty == true {
// 필요한 경우 추가 처리
}
return true
}
}
다음 코드는 'OK' 버튼을 선택했을 때 입력된 금액을 Int형 접근하는 사용 예이다.
extension MainViewController {
@IBAction func okButtonTapped(_ sender: UIButton) {
guard let amountText = tfAmount.text else {
print("금액 입력이 올바르지 않습니다.")
return
}
// 금액 (Int형 사용을 위해 tag값 사용)
var amount = self.tfAmount.tag
// 배송비
var shippingCost = 3000
// 총 금액 계산
let totalAmount = amount + shippingCost
print("총 금액 : \(totalAmount)원")
}
}
반응형
'개발 > iOS' 카테고리의 다른 글
[App Store Connect] 'NDEF is disallowed'. 에러 해결방법 (0) | 2024.10.04 |
---|---|
UITextField, UITextView 입력 시 키보드창 가려짐 방지 (0) | 2024.05.14 |
Floating, Dragging Button (1) | 2024.01.04 |
XOR 연산을 이용한 문자열 비교 (0) | 2023.12.07 |
Rosetta2 (0) | 2023.04.26 |