2016-12-05 28 views
0

私はUITextfieldにサブビューとして追加されたrightView UIImagesの間で変更しようとしています。ユーザーがアイコンをタップすると、挿入されたパスワードを表示または非表示にし、状態に応じてUIImageを変更する必要があります。右のアイコンイメージを変更するUITextField

これを達成するには、以下のコードをどのように編集できますか?

コード:

// 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 
     } 
    } 

どうもありがとう!

答えて

0

各画像にタグを追加しようとしましたか?例えば :その後

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

、あなたが書くことができ、その画像に変更する:

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

編集: FUNCのtogglePasswordSecurity(ImageViewの:UIImageView) はちょうどこれを変更し、2枚の画像を切り替えることを{

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 
    } 
} 
+0

どうすればこれらの2つの間で切り替えることができますか?いくつかのテキストフィールドに表示される小さな目を知っています。クリックするとパスワードが表示されますが、もう一度クリックするとパスワードが消えます。 ITはまた、2つの異なる画像間を切り替えるでしょう。 –

+1

各画像に異なるタグを追加します(1と2を使用できます)。私は私の答えを編集するつもりだ –

+0

IMは見てみよう1秒 –

0

ソリューション:

// Show eye icon to show the password will be triggered once there is a change in data in the UITextField 
    func textFieldDidChange() { 
     if passwordField.text != "" { 
      let leftImageView = UIImageView() 
      leftImageView.image = passwordImage 
      leftImageView.contentMode = .scaleAspectFit 
      leftImageView.tag = 1 

      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() { 

     if passwordField.isSecureTextEntry == false { 

      passwordImage = UIImage(named: "view_password") 
      textFieldDidChange() 

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

      passwordImage = UIImage(named: "heart") 
      self.textFieldDidChange() 
      // change left UIImage to view_password 
      passwordField.isSecureTextEntry = false 
     } 
    } 
関連する問題