如何生活检查NSTextField - Swift OS X
问题描述:
我目前正在使用Swift编写OS X应用程序。我想要做的是当用户在NSTextField
中输入文本时,我想运行一个函数来检查该值并将其添加到标签。我将如何迅速做到这一点?如何生活检查NSTextField - Swift OS X
答
- 符合
ViewController
到协议NSTextDelegate
。 - 分配
ViewController
作为代表TextField
。 -
执行
controlTextDidChange
方法。import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate, NSTextFieldDelegate { @IBOutlet weak var window: NSWindow! @IBOutlet weak var textField: NSTextField! @IBOutlet weak var label: NSTextField! func applicationDidFinishLaunching(aNotification: NSNotification) { textField.delegate = self } override func controlTextDidChange(notification: NSNotification) { let object = notification.object as! NSTextField self.label.stringValue = object.stringValue } func applicationWillTerminate(aNotification: NSNotification) { // Insert code here to tear down your application } }
在视图控制器:
import Cocoa
class ViewController: NSViewController, NSTextDelegate {
@IBOutlet weak var label: NSTextField!
@IBOutlet weak var label2: NSTextField!
@IBOutlet weak var textField: NSTextField!
@IBOutlet weak var textField2: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
}
override func controlTextDidChange(notification: NSNotification) {
if let txtFld = notification.object as? NSTextField {
switch txtFld.tag {
case 201:
self.label.stringValue = txtFld.stringValue
case 202:
self.label2.stringValue = txtFld.stringValue
default:
break
}
}
}
}
答
您可以使用NSNotificationCenter来观察您的文本字段。
@IBOutlet weak var textField: UITextField!
在viewDidLoad中()
let noti = NSNotificationCenter.defaultCenter()
noti.addObserver(self, selector: "textDidChange:", name: UITextFieldTextDidChangeNotification, object: textField)
,然后定义一个函数,如:
func textDidChange(noti: NSNotification) {
print(textField.text)
}
现在你在文本字段中输入的每个梯形,它将在textDidChange打印出来()函数。
希望这有助于
+0
该代码是针对iOS不是OS X.我在'UITextFieldTextDidChangeNotification'得到一个错误,我试图与'UITextFieldTextDidChangeNotification来取代它'但它仍然不起作用。错误是'未解决的标识符' – iProgram
感谢您的代码。稍后再试。我如何检测被编辑的标签(我可能在一个点上有2个) – iProgram
使用标签,可以识别特定的控件。代码值在Interface Builder中设置 – madmir
代码需要从NSTextFieldDelegate继承,而不是NSTextDelegate。您还需要将文本字段委托设置为self。 – iProgram