OS X开发.第一章,1.2,NSTextView
1.2 NSTextView
NSTextView是OS X中一种可以展现大容量文本的控件,但其文本内容超出控件本身时,会出现滚动条以供滑动。NSTextView的创建与使用与NSTextField类似,下面是其详细介绍。
1.2.1 基本声明
var textView: NSTextView!
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
textView = NSTextView()
textView.delegate = self
textView.enabledTextCheckingTypes = .min
textView.string = "Intent intent = new Intent(this);\n startActivity(intent);"
textView.isContinuousSpellCheckingEnabled = true
self.view.addSubview(textView)
textView.snp.makeConstraints{ make in
make.width.equalTo(self.view.frame.width - 80)
make.height.equalTo(self.view.frame.height - 150)
make.centerX.equalToSuperview()
make.top.equalTo(self.view.snp.top).offset(15)
}
}
说明:NSTextView与NSTextField相比,其文本输入与查看是其优势,那么Cocoa也相应地提供了有利文本编辑的属性。isContinuousSpellCheckingEnabled该方法就是是否开启自动拼写检查,对于Java或Swift这种对类名或方法名拼写较为严格的语言而言,该功能是个非常有利的特性。另外,NSTextView的文本设置或读取采用string属性进行读写。
1.2.2 常见代理
func textShouldBeginEditing(_ textObject: NSText) -> Bool {
} // 文本应该被编辑前回调,返布尔回值系决定用户能否输入的条件
func textDidBeginEditing(_ notification: Notification) {
} // 参数对象为Notification类型,需要转型操作。文本内容已经开始编辑时回调
func textDidEndEditing(_ notification: Notification) {
} // 失去焦点时回调
func textDidChange(_ notification: Notification) {
} // 内容变化时回调
func textShouldEndEditing(_ textObject: NSText) -> Bool {
} // 布尔返回值决定能否结束编辑状态
本节代码:
//
// NSTextViewController.swift
// Versatile
//
// Created by Eldest's MacBook on 2021/10/4.
//
import Cocoa
import SnapKit
class NSTextViewController: NSViewController, NSTextViewDelegate {
var mView: NSView!
var textView: NSTextView!
override func loadView() {
self.view = NSView(frame: NSRect(x: 0, y: 0, width: 500, height: 300))
}
private func initView(){
mView = NSView(frame: NSRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
textView = NSTextView()
textView.delegate = self
textView.enabledTextCheckingTypes = .min
textView.string = "Intent intent = new Intent(this);\n startActivity(intent);"
textView.isContinuousSpellCheckingEnabled = true
self.view.addSubview(textView)
textView.snp.makeConstraints{ make in
make.width.equalTo(self.view.frame.width - 80)
make.height.equalTo(self.view.frame.height - 150)
make.centerX.equalToSuperview()
make.top.equalTo(self.view.snp.top).offset(15)
}
}
private func initConfig(){
self.title = "NSTextView"
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
initView()
initConfig()
}
// MARK: - Delegate.
func textShouldBeginEditing(_ textObject: NSText) -> Bool {
print("------> textShouldBeginEditing: \(textObject.string)")
return true
}
func textDidBeginEditing(_ notification: Notification) {
let tempTextView = notification.object as! NSTextView
print("------> textDidBeginEditing: \(tempTextView.string)")
}
func textDidEndEditing(_ notification: Notification) {
let tempTextView = notification.object as! NSTextView
print("------> textDidEndEditing: \(tempTextView.string)")
}
func textDidChange(_ notification: Notification) {
let tempTextView = notification.object as! NSTextView
print("------> textDidChange: \(tempTextView.string)")
}
func textShouldEndEditing(_ textObject: NSText) -> Bool {
print("------> textShouldEndEditing: \(textObject.string)")
return true
}
}
(注意:本节由于新建了一个NSViewController,故在本ViewController内进行了loadView()重写方法的操作)
运行截图:
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibcefj
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22