我已经创建了用户名和密码。用户名没有字符数限制,但密码有8位数字字符数限制。如何禁用仅复制/粘贴密码字段。以及如何过滤一些对用户名无效的字符。
答案 0 :(得分:0)
有关复制和粘贴问题:
您将需要创建自己的TextField类,该类继承UITextField,然后重写canPerformAction
委托方法以禁用粘贴:
override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
if action == "paste:" {
return false
}
return super.canPerformAction(action, withSender: sender)
}
更详细的描述:How to disable Pasting in a TextField in Swift?
有关字符问题:
与上面类似的概念,只不过您需要实现textFieldDidEndEditing
或shouldChangeCharactersIn
委托方法。
textFieldDidEndEditing
将允许您在用户停止编辑该字段之后评估该字段中的字符串。示例:
func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) {
switch textField {
case usernameTextField:
// evaluate the `textField.text` for is a valid username
case passwordTextField:
// evaluate the `textField.text ` for is a valid password
}
}
shouldChangeCharactersIn
将允许您评估每个击键的字符串(我更喜欢在评估文本字段输入时使用后者)。示例:
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
switch textField {
case usernameTextField:
// evaluate the `replacementString` for is a valid username
case passwordTextField:
// evaluate the `replacementString` for is a valid password
}
return true
}