2017-10-22 18 views
1

작동하지 않는 것은 내가 가지고있는 작업은 다음과 같습니다안전 텍스트 .echosbullets 암호 필드 여기

@IBOutlet weak var password: NSSecureTextField! 
@IBOutlet weak var shwpswd: NSButton! //Checkbox 
@IBOutlet weak var pswdcell: NSSecureTextFieldCell! //Cell 


@IBAction func shwpswd(_ sender: Any) { 
    if(shwpswd.state == 1) { 
     pswdcell.echosBullets = false // Turn the Secure text into regular text 
    } 
    else if(shwpswd.state == 0) { 
     pswdcell.echosBullets = true // Secure text 
    } 
} 

모든 총알을 울리는와 반향 사이의 상태를 변경하지 않습니다 암호 필드의 텍스트를 제외하고, 잘 실행하는 것 진짜 텍스트. 모든 것이 적절히 함께 연결됩니다. - 셀은 텍스트 필드 안에 있으며 암호 버튼은보기에 있고 콘센트는 작동합니다. 이것이 iOS 케이스의 스위프트 "< Mac의 스위프트"중 다른 하나인지 궁금합니다.

편집 :

@IBOutlet weak var shwpswd: NSButton! //Checkbox 
@IBOutlet weak var visPswd: NSTextfield! //hidden regular box to show chars 
@IBOutlet weak var password: NSSecureTextField! //visible initial secure box 
@IBAction func shwpswd(_ sender: Any) { 
    if(shwpswd.state == 1) { 
     self.visPswd.stringValue = self.password.stringValue //Sync both the text fields 
     self.password.isHidden = true //hide the secure field 
     self.visPswd.isHidden = false //show the real character echo field 
    } 
    else if(shwpswd.state == 0) { 
     self.password.stringValue = self.visPswd.stringValue //Sync the two 
     self.password.isHidden = false // Inverse of above 
     self.visPswd.isHidden = true 
    } 
} 

주 텍스트 필드 passwordvisPswd 뷰에서 같은 크기와 위치입니다 - 하나에 항상 숨겨진 남아 : 여기에 최종 솔루션은 사람이 그것을보고 관심을 가져야한다 중복을 피하십시오. 사용자가 password 또는 visPswd 필드에 값을 입력하면 확인란 상태가 변경되면 다른 필드와 동기화됩니다.

답변

1

보안 필드 상단에 두 번째 텍스트 필드를 추가 할 수 있습니다. 체크 상자에 IBAction을 추가하여 필드 isHidden 속성을 전환하고 다른 textField stringValue를 복사하여 첫 번째 응답자로 만듭니다. 귀하의 구현은 다음과 같이 같아야합니다 :

import Cocoa 

class ViewController: NSViewController { 
    @IBOutlet weak var password: NSSecureTextField! 
    @IBOutlet weak var showPassword: NSTextField! 
    @IBOutlet weak var shwpswd: NSButton! 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     shwpswd.state = .off 
     showPassword.isHidden = true 
    } 
    override func viewDidAppear() { 
     super.viewDidAppear() 
     password.window?.makeFirstResponder(password) 
    } 
    @IBAction func showHidePassword(_ sender: NSButton) { 
     showPassword.isHidden = !showPassword.isHidden 
     password.isHidden = !password.isHidden 
     if !showPassword.isHidden { 
      showPassword.stringValue = password.stringValue 
      showPassword.becomeFirstResponder() 
     } else { 
      password.stringValue = showPassword.stringValue 
      password.becomeFirstResponder() 
     } 
    } 
} 

show/hide password sample

+1

감사합니다 아주 많이, 종류의 것을 피하기 위해 노력했지만, 그것은 잘 작동 – Ckacmaster