swift3.0 對UITextField()輸入框輸入的內容進行監控


首先需要繼承 UITextFieldDelegate

class TestViewController: UIViewController,UITextFieldDelegate{

}

添加事件委托

textField.delegate = self

點擊輸入框時觸發以下事件:

func textFieldDidBeginEditing(_ textField: UITextField){

}

我的需求為輸入一百以內最多為兩位小數,使用以下方式對輸入的值進行實時監控

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        
        var newString = (textField.text! as NSString).replacingCharacters(in: range, with: string)
        let expression = "^[0-9]*(?:\\.[0-9]{0,2})?$"
            
        do {
            let regex: NSRegularExpression = try NSRegularExpression(pattern: expression, options: NSRegularExpression.Options.caseInsensitive)
            let numberOfMatches = regex.matches(in: newString, options: NSRegularExpression.MatchingOptions.reportProgress, range: NSMakeRange(0, newString.characters.count))
            
            if numberOfMatches.count == 0{
                return false
            }else{
                    
                if newString != "" {
                    if newString[newString.startIndex] == "." {
                        newString = "0" + newString
                    }
                        
                    if newString[newString.index(before: newString.endIndex)] == "." {
                        newString = newString + "0"
                    }
                        
                    if (Double(newString)! > 100.0){
                        account_textfield.text = "100"
                        return false
                    }
                }
                return true
            }      
        }
        catch {
            return false
        }
    }

通過return值對輸入框的值進行控制,return false則放棄編輯,輸入框內容不會變更


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM