gpt4 book ai didi

xcode - 我如何在 Xcode 中订阅 TextField 的 TextChanged 事件

转载 作者:行者123 更新时间:2023-11-28 05:31:09 25 4
gpt4 key购买 nike

我最近开始从事一些测试项目,以感受使用 Xcode 进行 OS X 开发的感觉。我来自 Windows,所以我在这里可能没有多大意义。

我如何订阅 Swift 中的某些“事件”?我刚刚学习了如何将操作连接到 UI 对象。例如,我现在可以单击一个按钮,并以编程方式更改标签的文本。但是,这可能只是我缺乏知识的情况 - 我无法找到订阅 TextField 的“文本已更改”事件的方法。

假设我有一个 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.
}
}
}

而且我在身份检查器中向 TextField 控件添加了一个类名,但它没有响应文本更改。给出的消息是:

Failed to connect (textField) outlet from (Xcode_Action_Basics.ViewController) to (NSTextField): missing setter or instance variable

我刚刚在谷歌上搜索了那个错误并发现了这个页面:Failed to connect (storyboard) outlet from (NSApplication) to (NSNibExternalObjectPlaceholder) error in Cocoa and storyboard其中指出这是 Xcode 中的一个已知问题,并不意味着您的代码存在问题 - 但我对此不太确定,因为代码无法正常工作。不确定我是否错过了什么。

最佳答案

创建一个实现协议(protocol) 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 中在这里分配这个类:

enter image description here

关于xcode - 我如何在 Xcode 中订阅 TextField 的 TextChanged 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com