ios - 更改右侧图标图像 UITextField

标签 ios swift xcode uitextfield

我试图在作为 subview 添加到我的 UITextfield 的 rightView UIImages 之间进行更改。当用户点击图标时,它应该显示或隐藏插入的密码,并根据状态更改 UIImage。

我如何编辑下面的代码来实现此目的?

代码:

// Show eye icon to show the password
    func textFieldDidChange() {
        if passwordField.text != "" {
            let leftImageView = UIImageView()
            leftImageView.image = UIImage(named: "view_password")
            leftImageView.contentMode = .scaleAspectFit

            let leftView = UIView()
            leftView.addSubview(leftImageView)

            leftView.frame = CGRect(x: 0, y: 0, width: 40, height: 30)
            leftImageView.frame = CGRect(x: 10, y: 10, width: 20, height: 12)

            passwordField.rightViewMode = .whileEditing
            passwordField.rightView = leftView

            let tapgesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.togglePasswordSecurity))
            leftImageView.isUserInteractionEnabled = true
            leftImageView.addGestureRecognizer(tapgesture)

        }else{
            passwordField.rightViewMode = .never
        }
    }


    func togglePasswordSecurity(imageView: UIImageView) {

        if passwordField.isSecureTextEntry == false {

            // change left UIImage to hide_password
            passwordField.isSecureTextEntry = true
        }else{

            // change left UIImage to view_password
            passwordField.isSecureTextEntry = false
        }
    }

非常感谢!

最佳答案

您是否尝试过为每张图片添加标签? 例如:

let leftImageView = UIImageView()
leftImageView.image = UIImage(named: "view_password")
leftImageView.contentMode = .scaleAspectFit
leftImageView.tag = 1

然后,要更改该图像,您可以编写:

let myImage = UIView(withTag: 1) as! UIImageView
myImage.image = ...

编辑: 要在 2 个图像之间切换,只需更改以下内容: functogglePasswordSecurity(imageView: UIImageView) {

    if passwordField.isSecureTextEntry == false {

        let myImage = UIView(withTag: 1) as! UIImageView
        myImage.image = YOUR_IMAGE_1
        // change left UIImage to hide_password
        passwordField.isSecureTextEntry = true
    }else{

        let myImage = UIView(withTag: 1) as! UIImageView
        myImage.image = YOUR_IMAGE_2
        // change left UIImage to view_password
        passwordField.isSecureTextEntry = false
    }
}

关于ios - 更改右侧图标图像 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981152/

相关文章:

ios - PFQueryTableViewController 使用 includeKey 加载一行

ios - 将 TableViewController 中的 TableView 嵌入到另一个 View 中

iphone - 从远程数据库中检索数据

ios - swift 3.1 : Crash when custom error is converted to NSError to access its domain property

Swift 运算符 == 与 ===

ios - 如何在 iOS SDK 中包含第 3 方 SDK

ios - react native : ios - Library not found for -lbolts

objective-c - 延迟 -(id)init 实例;是否可以?

ios - 仅用于碰撞检测的 Box2D

ios - swift 。按 n 个元素加载 collectionView