输入文本字段swift 4的字符数和字符类型限制
我想对textfield设置一个限制。示例:最大字符数应为6,并且字符只能是数字。但是我不能把这两个控件放在一个函数中 文本计数的第一个func:输入文本字段swift 4的字符数和字符类型限制,swift,uitextfielddelegate,Swift,Uitextfielddelegate,我想对textfield设置一个限制。示例:最大字符数应为6,并且字符只能是数字。但是我不能把这两个控件放在一个函数中 文本计数的第一个func: func textFieldCharacterCountLimit(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { let maxLength = 6 le
func textFieldCharacterCountLimit(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let maxLength = 6
let currentString: NSString = txt_phone_no_verification_code.text! as NSString
let newString: NSString =
currentString.replacingCharacters(in: range, with: string) as NSString
return newString.length <= maxLength
}
func textFieldCharacterTypeLimit(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let allowedCharacters = CharacterSet.decimalDigits
let characterSet = CharacterSet(charactersIn: string)
return allowedCharacters.isSuperset(of: characterSet)
}
除此之外,它还给出了一个错误。和textFieldCharacterCountLimit函数不起作用。我想我得到了一个错误,因为两个函数用return影响相同的textfield。谢谢您不能只编造委托方法名称。您需要实现适当的方法,并在一个方法中执行所有需要的检查
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
if newString.count > 6 {
return false
}
return newString.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
}
只允许在特定范围的给定文本字段中输入指定的字符集
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if string.count == 0 {
return true
}
let currentText = textField.text ?? ""
let prospectiveText = (currentText as NSString).replacingCharacters(in: range, with: string)
return prospectiveText.containsOnlyCharactersIn(matchCharacters: "0123456789") &&
prospectiveText.count <= 6
}
如何编程仅接受最大长度数字输入的iOS文本字段
这项工作没有任何扩展。这就是为什么我最好把它作为对我问题的回答。顺便说一句,我不知道这句话:“你不能只是编造委托方法的名称。”谢谢你的详细介绍。
extension String {
// Returns true if the string contains only characters found in matchCharacters.
func containsOnlyCharactersIn(matchCharacters: String) -> Bool {
let disallowedCharacterSet = NSCharacterSet(charactersIn: matchCharacters).inverted
return self.rangeOfCharacter(from: disallowedCharacterSet as CharacterSet) == nil
}
}