NSTextField 是 macOS 应用开发中用于显示和编辑文本内容的控件,属于 AppKit 框架的一部分。它类似于 iOS 中的 UITextField,但提供了更多功能和灵活性,适用于桌面环境。
基本用法
创建NSTestField:
NSTextField(frame: NSRect(x: 20, y: 20, width: 200, height: 24))
显示或让用户编辑一行或多行文本。
常见用途
1、显示文本:作为只读标签(Label)。
2、输入文本:允许用户输入文字。
3、多行文本:配合 isEditable 和 isSelectable 支持多行编辑。
4、格式化:可以设置字体、颜色、对齐方式、背景等样式。
常用属性
1、stringValue:String类型,获取或设置文本内容。
2、isEditable:Bool类型,是否可编辑。
3、isSelectable:Bool类型,是否可选中。
4、isBezeled:Bool类型,是否带边框。
5、isBordered:Bool类型,是否显示边框。
6、isEnabled:Bool类型,是否启用。
7、backgroundColor:NSColor?类型,设置背景色。
8、textColor:NSColor?类型,设置文字颜色。
9、font:NSFont?类型,设置字体。
使用场景
1、简单写法
let label = NSTextField(labelWithString: "欢迎使用")
这个方式会自动设置为不可编辑、不可选择、无边框、透明背景。
2、完整写法
let textField = NSTextField(frame: NSRect(x: 20, y: 20, width: 200, height: 24))
textField.stringValue = "请输入用户名"
textField.isEditable = true
textField.isBezeled = true
textField.isBordered = true
textField.font = NSFont.systemFont(ofSize: 14)
textField.backgroundColor = .white
3、响应事件
可以通过设置 delegate 或使用 target / action 方式监听文本变化或用户交互:
textField.target = self
textField.action = #selector(textDidChange(_:))
总结
NSTextField文本输入框,可以实现显示/编辑文本的功能。
如果想要在SwiftUI 中没有直接使用 NSTextField,但可以通过 NSViewRepresentable 封装 NSTextField,以实现高级自定义文本框。
相关文章
SwiftUI显示AppKit视图的NSViewRepresentable协议:https://fangjunyu.com/2025/07/02/swiftui%e6%98%be%e7%a4%baappkit%e8%a7%86%e5%9b%be%e7%9a%84nsviewrepresentable%e5%8d%8f%e8%ae%ae/