swift 验证失败时,在 UITextField 中自动显示错误图标
Posted
技术标签:
【中文标题】swift 验证失败时,在 UITextField 中自动显示错误图标【英文标题】:Show error icon automatically in UITextField when validation is failed in swift 【发布时间】:2016-06-30 00:50:38 【问题描述】:我希望当 swift 中的一项验证失败时,错误图标图像将自动显示在 UITextField 中。
这是正常阶段
这是验证失败时的错误阶段
对于那个 UITextField,我创建了自定义 UITextField,如下所示
class OvalTextField: UITextField
required init(coder aDecoder: NSCoder)
super.init(coder: aDecoder)!
createBorder()
required override init(frame: CGRect)
super.init(frame: frame)
createBorder()
func createBorder()
let errorImg = UIImageView (frame: CGRectMake(0, 0, 30, 30))
errorImg.image = UIImage(named: "error")
errorImg.contentMode = UIViewContentMode.Left
self.layer.borderWidth = 1.0
self.layer.borderColor = UIColor(red:0.93, green:0.93, blue:0.93, alpha:1.0).CGColor
self.layer.cornerRadius = self.frame.size.height / 2
self.layer.masksToBounds = true
let gapLabel = UIView (frame: CGRectMake(60, 0, 10, 40))
self.leftView = gapLabel
self.leftViewMode = UITextFieldViewMode.Always
/* Display that one when validation is failed */
self.rightView = errorImg;
self.rightViewMode = UITextFieldViewMode.Always
并在 ViewController 中使用了 UITextField,
@IBOutlet var txtEmail: OvalTextField!
如果该 txtEmail 为空或无效的电子邮件地址,我想显示错误图标消息。
请建议我怎么做。提前致谢。
【问题讨论】:
这取决于您何时执行验证;您可以使用文本字段委托将其更新为人员类型,或者您可以在他们保存/提交表单时执行验证 我能问一下clearButtonMode
设置在这里可以使用吗?
【参考方案1】:
您可以使用 UITextFiledDelegate 方法 func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool 在用户输入时验证电子邮件。
-
先设置委托,txtEmail.delegate = self,然后
实现委托方法
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool
let email = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string)
if /* email is validate */
textField.rightView?.hidden = false
else
textField.rightView?.hidden = true
return true
【讨论】:
【参考方案2】:func validated() -> Bool
var valid: Bool = true
if ((txt_EmailID.text?.isEmpty) != nil)
// change placeholder color to red color for textfield email-id
txt_EmailID.attributedPlaceholder = NSAttributedString(string: "Please enter Your Email ID", attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
valid = false
if ((txt_UserName.text?.isEmpty) != nil)
// change placeholder color to red for textfield username
txt_UserName.attributedPlaceholder = NSAttributedString(string:"Please enter User Name",attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
valid = false
if ((txt_Password.text?.isEmpty) != nil)
// change placeholder color to red for textfield password
txt_Password.attributedPlaceholder = NSAttributedString(string:"Please enter Password",attributes: [NSForegroundColorAttributeName:UIColor.redColor()])
valid = false
if ((txt_MobileNo.text?.isEmpty) != nil)
// change placeholder color to red for textfield mobile no.
txt_MobileNo.attributedPlaceholder = NSAttributedString(string: "Please enter Mobile no.",attributes: [NSForegroundColorAttributeName: UIColor.redColor()])
valid = false
return valid
【讨论】:
以上是关于swift 验证失败时,在 UITextField 中自动显示错误图标的主要内容,如果未能解决你的问题,请参考以下文章
Swift 在文本输入期间验证 2 uitextfield 密码
如何创建 OTP 验证屏幕并在多个 uitextfield 上向后检测删除是 Swift