快速检查文本字段输入

标签 swift character textfield

我一直在努力寻找如何在用户输入时检查文本字段的输入。

如果用户键入一个词,它应该根据一些定义的规则更改标签和图像。

我的代码可以正常工作,但我总是落后一步。 (因为它总是在输入下一个字符之前读取内容。

如果它只是为了检查长度,我可以使用 countElements(textfield) + 1,但我希望它也表明用户在输入时不能使用某些字符,因此这不适用于检查不需要的字符。

我假设我正在使用的函数不是正确的“shouldChangeCharacters”。所以我对使用什么有点迷茫。有没有办法读取 println 或 NSLog 命令以返回到导出?

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        let passwordcheck = UserPasswordTextField.text

       
        if UserPasswordTextField.isFirstResponder() {
            if isValidPassword(passwordcheck) {
            PWimg.image = UIImage(named: "passwordapprovedicon")
            } else if passwordcheck.isEmpty {
                PWimg.image = UIImage(named: "passwordiconwrong")
            } else {
            PWimg.image = UIImage(named: "passwordiconwrong")
            }
}

     func isValidPassword(testStr2:String) -> Bool {
        println("validate password: \(testStr2)")
        
        let passwordRegEx = "[A-Z0-9a-z._%+-:/><#]{6,30}"
        
        if let passwordTest = NSPredicate(format: "SELF MATCHES %@", passwordRegEx) {
            return passwordTest.evaluateWithObject(testStr2)
        }
        
        return false       

最佳答案

从文本字段中监听 UIControlEventEditingChanged 事件。为他们注册

  1. Interface Builder:从文本字段拖动到文件,然后选择操作类型“编辑已更改”

  2. 以下代码:

    override func viewDidLoad() {
        super.viewDidLoad()
        // ... 
        textField.addTarget(self, action:"edited", forControlEvents:UIControlEvents.EditingChanged)
    }
    
    func edited() {
       println("Edited \(textField.text)")
    }
    

关于快速检查文本字段输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29114383/

相关文章:

JavaFX TextField 自动建议

ios - 以编程方式获取 UIImageView 的大小

string - Swift 字符串,字符连接加赋值

c# - 在字符串的每一行添加一个字符

ios - 在没有搜索 Controller 的情况下快速更改搜索栏中文本字段的高度

java - 右对齐文本字段中的文本 - vaadin

swift - 也能抛出的SequenceType/GeneratorType?

ios - 在不使用 SerializeObject 的情况下解析 F# 中的 Firebase JSON

ios - Apple 远程推送通知在沙盒和生产模式下的行为似乎有所不同

java - python "incrementing"一个字符串?