У меня есть текстовое поле, которое принимает только числовые значения. Мне было интересно, как я могу включить в себя возможность вводить сингл '.' для представления десятичной точки.shouldChangeCharactersInRange, который принимает одиночный '.'
У меня есть следующий код:
class ViewController: UIViewController, UITextFieldDelegate {
var formatter: NSNumberFormatter!
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
return string == "" || Double(string) != nil
}
override func viewDidLoad() {
amountTextField.delegate = self
// Initialize the formatter; minimum value is set to zero; style is Decimal.
formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle
formatter.minimum = 0
}
}
Этот код имеет слишком много проблем, чтобы быть полезным. Он не работает со многими локалями. Он не работает, если пользователь перемещает каретку. Он не обрабатывает пользователя, который вырезает или вставляет текст. – rmaddy
Я использую этот код для многих приложений, чтобы вводить валюту, я говорю ее только для валюты. Вы можете свободно изменять код, так как ваши требования нуждаются в нем – pableiros
@pableiros Спасибо! Как я могу изменить это, чтобы отображать только цифры, а не символ локали? –