在Swift中设置UITextField的最大字符长度 [英] Set the maximum character length of a UITextField in Swift
本文介绍了在Swift中设置UITextField的最大字符长度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我知道还有其他主题,但我似乎无法找到如何实现它。
I know there are other topics on this but I can't seem to find out how to implement it.
我正在尝试将UITextField限制为仅5个字符
I'm trying to limit a UITextField to only 5 Characters
最好使用字母数字和 - 和。和_
Preferably Alphanumeric and - and . and _
我见过这段代码
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool
{
let maxLength = 4
let currentString: NSString = textField.text
let newString: NSString =
currentString.stringByReplacingCharactersInRange(range, withString: string)
return newString.length <= maxLength
}
和
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let length = count(textField.text.utf16) + count(string.utf16) - range.length
return length <= 10
}
我只是不知道如何实际实现它,或者我应该换出哪个textfield用于我的自定义命名UITextField
I just don't know how to actually implement it or which "textfield" should I swap out for my custom named UITextField
推荐答案
-
您的视图控制器应符合
UITextFieldDelegate
,如下所示:
class MyViewController: UIViewController, UITextFieldDelegate {
}
设置文本字段的委托: myTextField.delegate = self
所有在一起:
class MyViewController: UIViewController,UITextFieldDelegate //set delegate to class
@IBOutlet var mytextField: UITextField // textfield variable
override func viewDidLoad() {
super.viewDidLoad()
mytextField.delegate = self //set delegate
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool
{
let maxLength = 4
let currentString: NSString = textField.text
let newString: NSString =
currentString.stringByReplacingCharactersInRange(range, withString: string)
return newString.length <= maxLength
}
对于Swift 4
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let maxLength = 1
let currentString: NSString = textField.text! as NSString
let newString: NSString =
currentString.replacingCharacters(in: range, with: string) as NSString
return newString.length <= maxLength
}
只允许将指定的字符集输入给定的文本字段
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
var result = true
if mytextField == numberField {
if count(string) > 0 {
let disallowedCharacterSet = NSCharacterSet(charactersInString: "0123456789.-").invertedSet
let replacementStringIsLegal = string.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
result = replacementStringIsLegal
}
}
return result
}
这篇关于在Swift中设置UITextField的最大字符长度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文