ยังไงเพื่อทำให้"ปลอดภัยบริเวณ"ใน UITextField กับ SecureTextEntry เปิด/ปิดการแสดง?

0

คำถาม

ผมมีปัญหาเรื่องฉันเพิ่ม secureTextEntry แสดง/ซ่อนอยู่ในข้อความฉันหมายความสงแต่ข้อความอยู่บนแสดง/ซ่อนปุ่ม

extension UITextField {
    fileprivate func setPasswordToggleImage(_ button: UIButton) {
        if(isSecureTextEntry){
            button.setImage(UIImage(named: "eye-active"), for: .normal)
        }else{
            button.setImage(UIImage(named: "eye-inactive"), for: .normal)

        }
    }

    func enablePasswordToggle(){
        let button = UIButton(type: .custom)
        setPasswordToggleImage(button)
        button.frame = CGRect(x: CGFloat(self.frame.size.width - 25), y: CGFloat(5), width: CGFloat(25), height: CGFloat(25))
        button.addTarget(self, action: #selector(self.togglePasswordView), for: .touchUpInside)
        self.rightView = button
        self.rightViewMode = .always
    }
    @IBAction func togglePasswordView(_ sender: Any) {
        self.isSecureTextEntry.toggle()
        setPasswordToggleImage(sender as! UIButton)
    }
}

ยังฉันมีข้อผิดพลาดที่สถานที่ของไอคอนอยู่ไกลถูกแทนที่จะเป็นบ้านของฉันหมายถึงและฉันไม่รู้ว่าทำไมแต่มันเป็นภาพไอคอน 2

ios swift uikit
2021-11-24 06:44:15
1

คำตอบที่ดีที่สุด

1

คุณสามารถใช้มันโดยตรงเพื่อเพิ่มภาพและนุ่นช่วยของคุณ UITextField. สามารถทำได้จากรหัสเช่นเดียว storyboard

// MARK: - UITextField
extension UITextField {
    @IBInspectable var leftPadding: CGFloat {
        get {
            return leftView?.frame.size.width ?? 0.0
        }
        set {
            let frame = CGRect(x: 0, y: 0, width: newValue, height: bounds.size.height)
            leftView = UIView(frame: frame)
            leftViewMode = .always
        }
    }

@IBInspectable var leftImage: UIImage? {
    get {
        let imgView = leftView?.subviews.first(where: {$0 is UIImageView}) as? UIImageView
        return imgView?.image
    }
    set {
        let frame = CGRect(x: 0, y: 0, width: leftPadding, height: bounds.size.height)
        leftView = UIView(frame: frame)
        
        let imgView = UIImageView(frame: frame.insetBy(dx: 4, dy: 4))
        imgView.contentMode = .scaleAspectFit
        leftView?.addSubview(imgView)
        imgView.image = newValue
        leftViewMode = .always
    }
}

@IBInspectable var rightPadding: CGFloat {
    get {
        return rightView?.frame.size.width ?? 0.0
    }
    set {
        let frame = CGRect(x: 0, y: 0, width: newValue, height: bounds.size.height)
        rightView = UIView(frame: frame)
        rightViewMode = .always
    }
}

@IBInspectable var rightImage: UIImage? {
    get {
        let imgView = rightView?.subviews.first(where: {$0 is UIImageView}) as? UIImageView
        return imgView?.image
    }
    set {
        let frame = CGRect(x: 0, y: 0, width: rightPadding, height: bounds.size.height)
        rightView = UIView(frame: frame)
        
        let imgView = UIImageView(frame: frame.insetBy(dx: 4, dy: 4))
        imgView.contentMode = .scaleAspectFit
        rightView?.addSubview(imgView)
        imgView.image = newValue
        rightViewMode = .always
    }
  }  
}
2021-11-24 07:02:09

ดังนั้นฉันควรจะเปลี่ยนปุ่มเพื่อ ImageView?
Lucy Shen

ไม่ปล่อยให้ฉันแก้ไขที่อยู่เหนือการตอบสนอต้องรวม UIButton
udbhateja

ฉันยังคงมีปัญหาจาก 3 ภาพหน้าจอที่จับได้. ในว่างเปล่า textfield มันเป็นตาของไอคอน,หลังจากที่ฉันกดมันที่ภาพไอคอนดูเหมือนเหนือก่อนไอคอนและทั้งหมดฉันมี 2 ที่ทำงานอยู่ไอคอน
Lucy Shen

nvm ฉันเจอปัญหาแล้ว ขอบ u ยังไง
Lucy Shen

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่