繁体   English   中英

如何限制Swift文本字段中的数字?

[英]How to limit the numbers in the text field in Swift?

我希望用户在文本字段中填写0到60之间的数字。如何将数字字符数限制为2? 如何将最大数量限制为60? 以及如何取消文本字段上的“粘贴”选项,以便用户无法粘贴字母?

我认为有两种方法可以做到这一点。

实现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 ,转换为Integer,如果新值高于60,则返回false。 (还向用户显示相应的错误)。

我认为更好的方法是提供UIPickerView

使用textfield的委托方法

其中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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM