我最近开始着手一些测试项目,以了解使用Xcode进行OS X开发的感觉。我来自Windows,因此在这里可能没有多大意义。
我将如何在Swift中订阅某些“事件”?我刚刚学习了如何将动作连接到UI对象。例如,我现在可以单击一个按钮,然后以编程方式更改标签的文本。但是,这可能只是我缺乏知识的一种情况-我无法找到一种方法来订阅TextField的“ Text Changed”事件。
假设我有一个TextField,并且当我在运行时更改文本(即键入内容)时,我想在该特定TextField的textChanged事件中执行某些操作。
在OS X开发中是否还有诸如TextChanged事件之类的东西?
更新
我现在使用以下代码:
import Cocoa
class ViewController: NSViewController {
class textField:NSTextField, NSTextFieldDelegate
{
override func awakeFromNib() {
delegate = self;
}
override func controlTextDidChange(obj: NSNotification)
{
println("Text changed.")
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}
并且我在Identity Inspector的TextField控件中添加了ClassName,但是它不响应文本更改。给出的消息是:
无法将(textField)插座从(Xcode_Action_Basics.ViewController)连接到(NSTextField):缺少设置器或实例变量
我只是用谷歌搜索了这个错误并遇到了这个页面:无法将(storyboard)插座从(NSApplication)连接到(cocoa)和Storyboard中的(NSNibExternalObjectPlaceholder)错误,该错误指出这是Xcode中的已知问题,并不意味着存在您的代码有问题-但我对此不太确定,因为代码无法正常工作。不知道我是否错过了什么。
创建一个实现协议的类,NSTextFieldDelegate
例如
class MyTextField:NSTextField, NSTextFieldDelegate {
override func awakeFromNib() {
delegate = self // tell that we care for ourselfs
}
override func controlTextDidChange(obj: NSNotification) {
// .... handle change, there are a lot of other similar methods. See help
}
}
在IB中,请在此处分配此类:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句