我的应用程序有一个带有两个 NSTextField 的模式对话框,上面有“取消”和“确定”按钮。第一个文本字段有一个数字格式化程序,以确保您只能输入整数。
当用户尝试在第一个文本字段中输入无效数据时,我想向他们显示警报。这应该显示文本字段何时失去焦点,或者他们是否尝试单击模式的“确定”按钮。
我试过的:
NSTextFieldDelegate
为文本字段设置一个:
extension ViewController: NSTextFieldDelegate {
func control(_ control: NSControl, didFailToFormatString string: String, errorDescription error: String?) -> Bool {
let alert = NSAlert()
alert.messageText = "Invalid Number"
alert.informativeText = error ?? "You must enter a number."
alert.runModal()
return true
}
}
问题
上面的代码只是一种工作;当存在无效数据时,它会在文本字段失去焦点时显示有用的警报,但是:
- 然后清空文本字段的内容;我希望无效数据保留在该字段中,以便用户可以更正它
- 单击“确定”按钮不会触发字段的格式设置,因此不会显示警报。