Ios 限制可以在Swift的UITEXT字段中输入的字符
我希望能够限制可以输入到文本字段中的字符,例如,我希望限制为仅1-5个数字(1、2、3和5),如果用户输入的数字大于5,我希望文本字段不做任何操作 我已经看到了如何限制长度,但我找不到任何东西来限制我上面描述的某些字符 我尝试使用Ios 限制可以在Swift的UITEXT字段中输入的字符,ios,swift,uitextfield,Ios,Swift,Uitextfield,我希望能够限制可以输入到文本字段中的字符,例如,我希望限制为仅1-5个数字(1、2、3和5),如果用户输入的数字大于5,我希望文本字段不做任何操作 我已经看到了如何限制长度,但我找不到任何东西来限制我上面描述的某些字符 我尝试使用编辑qtyfieldchanged,但它并不能完全满足我的需要 myField.addTarget(self, action: #selector(UserInputViewController.fieldChanged), forControlEvents: UICo
编辑qtyfieldchanged
,但它并不能完全满足我的需要
myField.addTarget(self, action: #selector(UserInputViewController.fieldChanged), forControlEvents: UIControlEvents.EditingChanged)
func fieldChanged(){
let number = Int(myField.text!)
if number < 2{
print("Number not allowed")
}
}
在委托中,解析文本并将其转换为数字。如果数字不在您的范围内,则将文本设置为其先前的值或采取任何适当的操作。在委托中,解析文本并将其转换为数字。如果数字不在您的范围内,则将文本设置为其先前的值或采取任何适当的操作。我将此作为字符串扩展名执行
extension String {
var containsValidCharacter: Bool {
let characterSet = CharacterSet(charactersIn: "12345")
let range = (self as NSString).rangeOfCharacter(from: characterSet)
return range.location != NSNotFound
}
}
然后在方法中的应更改字符
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return !string.containsValidCharacter
}
我将其作为字符串扩展名来执行
extension String {
var containsValidCharacter: Bool {
let characterSet = CharacterSet(charactersIn: "12345")
let range = (self as NSString).rangeOfCharacter(from: characterSet)
return range.location != NSNotFound
}
}
然后在方法中的应更改字符
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return !string.containsValidCharacter
}
什么是编辑qtyfieldchanged
?没有记录此类事件(至少对于Swift 3而言)。我的错是,我键入了错误的方法。什么是编辑qtyfieldchanged
?没有记录此类事件(至少对于Swift 3而言)。我的错,我键入了错误的方法。感谢您的重播。感谢您的重播。感谢您的建议。很好的解决方案,只是没有理由反转
返回之前,并且shouldChangeCharactersRange
函数是否也会阻止退格。为了解决这个问题,我必须插入guard string!=“”else{return true}
在返回字符串之前。containsValidCharacter
谢谢你的建议。很好的解决方案,只是没有理由反转
返回之前,并且shouldChangeCharactersRange
函数是否也会阻止退格。为了解决这个问题,我必须插入guard string!=“”else{return true}
在返回字符串之前。containsValidCharacter