在 Cocoa Touch 中,您可以禁用文本视图的用户交互,如下所示:
let textView = UITextView()
textView.isUserInteractionEnabled = false
Run Code Online (Sandbox Code Playgroud)
但是在 Cocoa 中,NSTextView 没有这么容易使用的 API。
那么禁用 NSTextView 用户交互的正确方法是什么?
您可以editable 通过以下方式禁用它:
textView.isEditable = false
Run Code Online (Sandbox Code Playgroud)
它的'selectable由:
textView.isSelectable = false
Run Code Online (Sandbox Code Playgroud)
但是,当您同时禁用它们时。这个 textView 仍然会拦截 Mouse-down 事件,这与isUserInteractionEnabled .
所以,现在,为了启用点击,我的解决方案是子类化 aNSTextView并覆盖它的'hitTest:
class TextView: NSTextView {
override func hitTest(_ point: NSPoint) -> NSView? {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
一个封装的方式在这里
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)
}
override func hitTest(_ point: NSPoint) -> NSView? {
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1468 次 |
| 最近记录: |