gpt4 book ai didi

swift - 如何快速捕获 NSControl 上的一些事件

转载 作者:行者123 更新时间:2023-11-28 10:56:14 27 4
gpt4 key购买 nike

我正在使用 Swift 为 OSX 编写应用程序,我正在寻找一种在 NSControl 上捕获事件的好方法。显然,我进行了搜索,但我发现的信息往往不清楚或过时。就我而言,我想在 NSTextField 上捕获几个事件(按键、文本更改、焦点丢失等)。

当我在 NSTextField 中按下“Enter”时,它会发送一个 Action 。当我在 NSTextField 中单击或写入时,也许有一种方法可以发送操作吗?

最佳答案

您可以子类化 NSTextField 并覆盖 textDidChange 以进行文本更改、textDidEndEditing 以获取失去焦点和 keyUp 方法以获取按键。像这样尝试:

import Cocoa

class CustomTextField: NSTextField {
override func viewWillMove(toSuperview newSuperview: NSView?) {
// customize your field here
frame = newSuperview?.frame.insetBy(dx: 50, dy: 50) ?? frame
}
override func textDidChange(_ notification: Notification) {
Swift.print("textDidChange")
}
override func textDidEndEditing(_ notification: Notification) {
Swift.print("textDidEndEditing")
}
override func keyUp(with event: NSEvent) {
Swift.print("keyUp")
}
}

查看 Controller 示例用法:


import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
let textField = CustomTextField()
view.addSubview(textField)
}
}

Sample

关于swift - 如何快速捕获 NSControl 上的一些事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371152/

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