func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
// 获取输入的文本,移除向输入框中粘贴文本时,系统自动加上的空格(iOS11上有该问题)
let new = string.replacingOccurrences(of: " ", with: "")
// 获取编辑前的文本
var old = NSString(string: textField.text ?? "")
// 获取编辑后的文本
old = old.replacingCharacters(in: range, with: new) as NSString
// 获取数字的字符集
let number = CharacterSet(charactersIn: "0123456789")
// 判断编辑后的文本是否全为数字
if old.rangeOfCharacter(from: number.inverted).location == NSNotFound {
// number.inverted表示除了number中包含的字符以外的其他全部字符
// 如果old中不包含其他字符,则格式正确
// 允许本次编辑
textField.text = old as String
// 移动光标的位置
DispatchQueue.main.async {
let beginning = textField.beginningOfDocument
let position = textField.position(from: beginning, offset: range.location + new.count)!
textField.selectedTextRange = textField.textRange(from: position, to: position)
}
}
return false
}
UITextField,只输入或粘贴数字,swift 4
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在实际开发中,经常会遇到UITextField的文本内容的限制,如密码的格式(只允许数字,或者允许数字和大小写字...
- 前言 从众多优秀的专业教练中脱颖而出,个人品牌是根本。你问为什么你必须花时间在这?如果没有品牌,个人身份和独特的名...
- 时隔那么久,终于能够静下来,好好地写一篇关于本兮的文。 第一次知道本兮这个名字是小学的时候,在某个音乐网站听到了《...