UITextField
에 입력 한 텍스트의 형식을 지정하려는 문제를 해결하기 위해 SO에서 일부 코드를 빌려 수정했습니다. .decimal
numberStyle
이 NumberFormatter
이면 제대로 작동하지만 (쉼표가 필요한 곳에 추가합니다.) .currency
을 사용하면 앱을 실행 한 후에 아무 것도 입력 할 수 없습니다. UITextField
이 채워지지 않습니다.NumberFormatter()의 .currency 형식을 사용할 때 UITextField를 채울 수 없습니다.
로케일을 가지고 놀아 보았는데 아무 것도 해결하지 못했습니다.
내가 원하는 모두는 즉시 그것은 또는 I '는 digitsOnly
확장자없이 그 일 년대 UITextField
에 입력을 시작으로 사용자에게 그들이 입력 한 숫자 앞에 "$"기호를 표시하는 것입니다 나는 그것을 사용하고있는 것 같지 않습니다.
관련 코드 :
case annualBill!:
if isNumeric {
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencySymbol = "$"
let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
let numberWithOutCommas = newString.replacingOccurrences(of: ",", with: "")
let number = formatter.number(from: numberWithOutCommas)
if number != nil {
let formattedString = formatter.string(from: number!)
textField.text = formattedString
values.annualBill = Decimal(string: (textField.text?.digitsOnly)!)
print(values.annualBill ?? "NA")
} else {
textField.text = nil
}
extension String {
var digitsOnly: String {
return components(separatedBy:
NSCharacterSet.decimalDigits.inverted).joined(separator: "")
}
}
'string'은 배열이 아니기 때문에'.count' 메소드를 가지고 있지 않습니다. – Grimes47
아, 그것을 얻었습니다. 그것은 .characters.count입니다. 'dropLast' 메소드와 동일합니다. 나는 지금 일하고있다. 내가 100 %에 이르면 업데이트됩니다. 감사. – Grimes47
내 특정'switch' 문에 대해 몇 가지 수정 작업을하게되었습니다. 감사!! – Grimes47