swift - 如何使以编程方式添加的 NSTextView 处于活动状态?
问题描述
我正在制作一个应用程序,用户可以在其中单击窗口上的任意位置,并NSTextView
在鼠标位置添加一个。我已经让它与下面的代码一起工作,但在将它添加到视图(父视图)后,我无法使其处于活动状态(焦点)。我必须单击NSTextView
以使其处于活动状态,但这不是我想要的。我希望它在添加到父视图时自动变为活动状态。
在我的代码中ViewController
添加NSTextView
到它的视图:
private func addText(at point: NSPoint) {
let textView = MyTextView(frame: NSRect(origin: point, size: CGSize(width: 150.0, height: 40.0)))
view.addSubview(textView)
}
MyTextView
类如下所示:
class MyTextView: NSTextView {
override var shouldDrawInsertionPoint: Bool {
true
}
override var canBecomeKeyView: Bool {
true
}
override func viewWillDraw() {
isHorizontallyResizable = true
isVerticallyResizable = true
insertionPointColor = .red
drawsBackground = false
isRichText = false
allowsUndo = true
font = NSFont.systemFont(ofSize: 40.0)
}
}
另外,我希望它在单击其他一些元素(视图)时失去焦点(变为非活动状态)。现在,一旦 aNSTextView
变为活动状态,无论我单击什么其他元素,它都会保持活动状态,除非我单击空白空间以创建另一个NSTextView
.
我已经多次阅读 Apple 文档,但我认为我遗漏了一些东西。任何帮助将非常感激。
解决方案
获取's的NSWindow
实例并调用将文本视图作为参数传递。NSViewController
view
makeFirstResponder
失去焦点通话makeFirstResponder
传球nil
。
推荐阅读
- thingsboard - 如何更改 ThingsBoard 的默认 JWT 安全密钥?
- kubernetes - 无法使用 ISTIO 网关和虚拟服务连接到 HTTPS 服务
- ios - React Native:在 XCode 9.2 和 9.4 以及 RN 55.4 上构建 IOS 失败
- priority-web-sdk - 优先级 REST:没有有用的错误
- plugins - 如何正确使用 shopware event-subscriber
- java - 将excel字符串数据存储到数组列表中
- python - 使用 python sshtunnel 的隧道
- java - 如何使用 Retrofit Android 解析对象内部的数组
- java - Hazelcast的组播发现
- python - 使用 systemd 以特定顺序执行多个 Python 脚本