2017-05-12 4 views
0

나는 암호 필드 "#" 대신 의 총알을 보여줄 수있는 요구 사항을 가지고있다. 그러나 UITextField에는 기본 옵션이 없습니다.표시 대신 "보안 텍스트 항목"에 대한의 UITextField에서 "총알"의 "#"는

나는 "shouldChangeCharactersInRange"에 을 사용자 정의 로직을 작성하는 것을 시도했다하지만 난 사용자가 제거 또는 사이에서 특정 문자를 추가 할 때 인덱스를 처리 할 수 ​​없습니다입니다.

내 질문은 다음과 같습니다. - 1. 어떤 라이브러리를 찾아야합니까? 2. 다른 기본 옵션이 있습니까? 3. 사용자 지정 논리를 작성해야합니까? 내가 제대로 "shouldChangeCharactersInRange" 또는 그것을 처리 할 수있는 곳 그렇다면 당신은이 논리

  • 에 대한 모든 제 3 자 라이브러리를 찾을 필요가없는 아니오 아니오 당신에 사용할 수있는 기본 옵션이없는

  • +2

    [UITextfield의 보안 암호 문자 변경] 가능한 복제본 (http://stackoverflow.com/questions/3280069/change-the-secure-password-character-in-uitextfield) –

    답변

    2
    1. "textFieldDidChange" ...
    2. 예, 당신은 그래서 여기 간다, 귀하의 요구에 대한 사용자 정의 로직을 작성해야 할 필요가

      var passwordText = String() 
      
      func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
      
      if textField == textFieldPassword { 
      
          var hashPassword = String() 
          let newChar = string.characters.first 
          let offsetToUpdate = passwordText.index(passwordText.startIndex, offsetBy: range.location) 
      
          if string == "" { 
           passwordText.remove(at: offsetToUpdate) 
           return true 
          } 
          else { passwordText.insert(newChar!, at: offsetToUpdate) } 
      
          for _ in passwordText.characters { hashPassword += "#" } 
          textField.text = hashPassword 
          return false 
      } 
      
    +0

    감사. 하지만 나는이 기능을 대신 할 수있는 swift 2.3을 사용하고 있습니다. - offsetToUpdate = passwordText.index하자. String은 멤버 인덱스가 없다고 말합니다. –

    +0

    신속한 3 구문이었던 형제가 나를 대신하여 당신을 찾아 보자 !! –

    +0

    고마워요 !!!!!!!!! –

    0

    보안 입력 옵션이없는 일반 텍스트 필드를 사용하십시오. 사용자가 문자를 입력하면이를 문자열 변수에 저장하고 텍스트 필드에서 글 머리 기호 대신 제시 할 문자로 바꿉니다.

    class ViewController: UIViewController,UITextFieldDelegate { 
    
        let textField = UITextField(frame :CGRect(x:16,y:50,width:200,height: 40)) 
        override func viewDidLoad() { 
           super.viewDidLoad() 
    
          textField.delegate = self 
          self.view.addSubview(textField) 
           textField.becomeFirstResponder() 
    } 
    
    var password: String = "" 
        func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool{ 
    
         password = password+string 
         textField.text = textField.text!+"#"//Character you want 
         print("\(password)") 
         return false 
        } 
    } 
    

    이것은 스위프트 2에 있습니다. 도움을 얻으십시오!

    관련 문제