gpt4 book ai didi

swift - 安全文本 .echosbullets 不适用于密码字段

转载 作者:行者123 更新时间:2023-11-30 10:39:27 25 4
gpt4 key购买 nike

这是我得到的:

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

请注意,文本字段 passwordvisPswd 在 View 中的大小和位置相同 - 其中一个始终保持隐藏以避免重叠。当用户在 passwordvisPswd 字段中输入值时,当复选框状态更改时,它会与另一个字段同步。

最佳答案

您可以在安全字段顶部添加第二个文本字段来完成您想要的操作。将 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()
}
}
}

show/hide password sample

关于swift - 安全文本 .echosbullets 不适用于密码字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57184436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com