我想在这里实现的是在我按下返回键之后,如果文本字段的文本与单词January匹配,则打印正确,如果没有,则打印错误。
但是当我按下返回键时,没有打印出来。
有人可以写一个关于如何使用DidEndEditing的示例代码吗?
@IBOutlet weak var wordTextfield: NSTextField!
let monthEN = "January"
func textFieldDidEndEditing(wordTextfield: NSTextField) {
if wordTextfield.stringValue == monthE{
print("right")
}else{
print("wrong")
}
}
答案 0 :(得分:1)
os x中的textFieldDelegate在Swift 4中的工作方式如下:
class MainViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var textFileViewLabel: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
override func controlTextDidChange(_ obj: Notification) {
//Here check the changes of textField input
}
override func controlTextDidEndEditing(_ obj: Notification) {
//Here check the changes of textField input
}
}
答案 1 :(得分:0)
据推测,你来自iOS背景,而你刚刚进入OS X.我没有太多的OS X开发经验,但似乎textFieldDidEndEditing(_:)
不属于NSTextFieldDelegate
协议。
NSTextFieldDelegate
只是NSControlTextEditingDelegate
的扩展,并且不添加任何方法。
考虑到这一点,看起来我们可能需要在OS X或潜在control(_:textFieldShouldEndEditing:)
上实现类似行为的control(_:isValidObject:)
。但无论哪种方式,重要的是要注意NSTextField
永远不会调用textFieldDidEndEditing(_:)
- 这完全来自iOS。
有关详细信息,建议您查看the Apple documentation for NSControlTextEditingDelegate
。
还值得一提的是确保您确实设置了文本字段的delegate
属性。