在Cocoa Touch中,您可以禁用文本视图的用户交互,如下所示:
let textView = UITextView()
textView.isUserInteractionEnabled = false
但是在Cocoa中,NSTextView没有这么容易使用的API 那么禁用NSTextView用户交互的正确方法是什么?
答案 0 :(得分:3)
您可以通过以下方式停用“editable
:
textView.isEditable = false
它的'selectable
by:
textView.isSelectable = false
然而,当你禁用它们时。此textView仍会拦截Mouse-down事件,这与isUserInteractionEnabled
不同。
所以,现在,要启用点击,我的解决方案是继承NSTextView
并覆盖其'hitTest:
class TextView: NSTextView {
override func hitTest(_ point: NSPoint) -> NSView? {
return nil
}
}
封装的方式就在这里
class StaticTextView: NSTextView {
override init(frame frameRect: NSRect) {
super.init(frame: frameRect)
}
override init(frame frameRect: NSRect, textContainer container: NSTextContainer?) {
super.init(frame: frameRect, textContainer: container)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
func setup() {
isSelectable = false
isEditable = false
}
override func hitTest(_ point: NSPoint) -> NSView? {
return nil
}
}