【发布时间】:2020-12-09 01:56:31
【问题描述】:
我的应用程序有一个带有两个 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
}
}
问题
上面的代码只是一种工作;当存在无效数据时,它确实会在文本字段失去焦点时显示有用的警报,但是:
- 然后清空文本字段的内容;我希望无效数据保留在字段中,以便用户更正它
- 单击“确定”按钮不会触发字段的格式设置,因此不会显示警报。
【问题讨论】:
-
将他们输入的文本值保存在一个变量中。
-
第一个问题对我来说似乎是一个错误。 macOS 10.13 不会清空该字段。
标签: swift cocoa appkit nsformatter