- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我得到的:
@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
}
}
一切似乎都运行良好,除了密码字段中的文本不会改变回显项目符号和回显真实文本之间的状态。所有内容也都正确链接在一起 - 单元格位于文本字段内,密码按钮位于 View 中,并且 socket 可以工作。我想知道这是否是另一个“Swift on mac < Swift on iOS case”。
编辑:这是最终的解决方案,如果有人想看的话:
@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
}
}
请注意,文本字段 password
和 visPswd
在 View 中的大小和位置相同 - 其中一个始终保持隐藏以避免重叠。当用户在 password
或 visPswd
字段中输入值时,当复选框状态更改时,它会与另一个字段同步。
最佳答案
您可以在安全字段顶部添加第二个文本字段来完成您想要的操作。将 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.toggle()
password.isHidden.toggle()
if !showPassword.isHidden {
showPassword.stringValue = password.stringValue
showPassword.becomeFirstResponder()
} else {
password.stringValue = showPassword.stringValue
password.becomeFirstResponder()
}
}
}
关于swift - 安全文本 .echosbullets 不适用于密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57184436/
这是我得到的: @IBOutlet weak var password: NSSecureTextField! @IBOutlet weak var shwpswd: NSButton! //Chec
这是我得到的: @IBOutlet weak var password: NSSecureTextField! @IBOutlet weak var shwpswd: NSButton! //Chec
我是一名优秀的程序员,十分优秀!