如何限制Swift中文本域的数字?
How to limit the numbers in the text field in Swift?
我希望用户在文本字段中填写一个 0 到 60 之间的数字。
我怎样才能将数字字符限制为 2?
如何限制最大数量为60?
以及如何取消文本字段上的 'paste' 选项,使用户无法粘贴字母?
我认为有两种方法可以做到这一点。
实施 UITextFieldDelegate
并实施功能
func textField(textField: UITextField,
shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
var startString = ""
if textField.text != nil {
startString += textField.text!
}
startString += string
var limitNumber = startString.toInt()
if limitNumber > 60 {
return false
} else {
return true
}
}
在此每次检查到目前为止输入到 UITextField
的内容,转换为整数,如果新值大于 60,则 return 为假。 (同时向用户显示适当的错误)。
我认为更好的方法是提供 UIPickerView
。
使用文本域的委托方法
其中 10 是文本字段的最大限制...
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = countElements(textField.text) + countElements(string) - range.length
return newLength <= 10 // Bool
}
如果 countElements 在最新版本的 s 中不起作用
wift 使用 count 而不是 countElements。
要禁用复制和粘贴:
func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool
{
if action == "paste:"
{return false}
return super.canPerformAction(action,withSender:sender)
}
我希望用户在文本字段中填写一个 0 到 60 之间的数字。 我怎样才能将数字字符限制为 2? 如何限制最大数量为60? 以及如何取消文本字段上的 'paste' 选项,使用户无法粘贴字母?
我认为有两种方法可以做到这一点。
实施 UITextFieldDelegate
并实施功能
func textField(textField: UITextField,
shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool {
var startString = ""
if textField.text != nil {
startString += textField.text!
}
startString += string
var limitNumber = startString.toInt()
if limitNumber > 60 {
return false
} else {
return true
}
}
在此每次检查到目前为止输入到 UITextField
的内容,转换为整数,如果新值大于 60,则 return 为假。 (同时向用户显示适当的错误)。
我认为更好的方法是提供 UIPickerView
。
使用文本域的委托方法
其中 10 是文本字段的最大限制...
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let newLength = countElements(textField.text) + countElements(string) - range.length
return newLength <= 10 // Bool
}
如果 countElements 在最新版本的 s 中不起作用 wift 使用 count 而不是 countElements。
要禁用复制和粘贴:
func canPerformAction(_ action: Selector, withSender sender: AnyObject?) -> Bool
{
if action == "paste:"
{return false}
return super.canPerformAction(action,withSender:sender)
}