在Swift中将UITextField输入限制为数字

如何在Swift中将用户的TextField输入限制为数字?

回答:

您可以使用UITextFieldDelegateshouldChangeCharactersInRange方法将用户的输入限制为数字:

func textField(textField: UITextField,

shouldChangeCharactersInRange range: NSRange,

replacementString string: String) -> Bool {

// Create an `NSCharacterSet` set which includes everything *but* the digits

let inverseSet = NSCharacterSet(charactersInString:"0123456789").invertedSet

// At every character in this "inverseSet" contained in the string,

// split the string up into components which exclude the characters

// in this inverse set

let components = string.componentsSeparatedByCharactersInSet(inverseSet)

// Rejoin these components

let filtered = components.joinWithSeparator("") // use join("", components) if you are using Swift 1.2

// If the original string is equal to the filtered string, i.e. if no

// inverse characters were present to be eliminated, the input is valid

// and the statement returns true; else it returns false

return string == filtered

}


为Swift 3更新:

 func textField(_ textField: UITextField, 

shouldChangeCharactersIn range: NSRange,

replacementString string: String) -> Bool {

// Create an `NSCharacterSet` set which includes everything *but* the digits

let inverseSet = NSCharacterSet(charactersIn:"0123456789").inverted

// At every character in this "inverseSet" contained in the string,

// split the string up into components which exclude the characters

// in this inverse set

let components = string.components(separatedBy: inverseSet)

// Rejoin these components

let filtered = components.joined(separator: "") // use join("", components) if you are using Swift 1.2

// If the original string is equal to the filtered string, i.e. if no

// inverse characters were present to be eliminated, the input is valid

// and the statement returns true; else it returns false

return string == filtered

}

以上是 在Swift中将UITextField输入限制为数字 的全部内容, 来源链接: utcz.com/qa/435309.html

回到顶部