Как ограничить число для ввода в UITextField (Swift)?
Есть UITextField, и нужно чтобы пользователь не мог ввести в него число меньше 1 и больше 100. (Именно не количество символов, а число)
Есть метод - shouldChangeCharactersIn range, но что-то не получается его использовать и для ограничения по MAX и по MIN:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
var maxValue = 100 {
didSet {
textField?.text = nil
}
}
}
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = NSString(string: textField.text!).replacingCharacters(in: range, with: string)
if newText.isEmpty {
return true
}
else if let intValue = Int(newText), intValue <= maxValue {
return true
}
return false
}
}
protocol AsyncGeneratorType {
associatedtype Element
associatedtype Fetch
func next(_ fetchNextBatch: Fetch)
}
Нельзя вводить 0 и отрицательные числа. И числа более 100.
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Вот так можно - проверяем вхождение в диапазон
class ViewController: UIViewController {
let minValue = 1
let maxValue = 100
lazy var valuesRange = minValue...maxValue
}
extension ViewController: UITextFieldDelegate {
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newText = NSString(string: textField.text!).replacingCharacters(in: range, with: string)
if newText.isEmpty {
return true
}
return valuesRange.contains(Int(newText) ?? minValue - 1)
}
}