2017-06-11 15 views
1

、あなたがこのようなテキストビューのユーザーとの対話無効にすることができます。NSTextViewのユーザー操作を無効にするにはどうすればよいですか?ココアタッチで

let textView = UITextView() 
textView.isUserInteractionEnabled = false 

しかし、ココアを、NSTextViewは、使用するそのような簡単なAPIを持っていません。
NSTextViewのユーザー操作を無効にする適切な方法は何ですか?

答えて

2

あなたはでeditable

textView.isEditable = false 

とそのは、そのを無効にすることができます:あなたはそれらの両方を無効にすると、しかし

textView.isSelectable = false 

によってselectable。このtextViewは、isUserInteractionEnabledとは異なるMouse-downイベントを傍受します。

だから、今のところ、クリックスルー可能にするために、私の解決策はNSTextViewをサブクラス化され、そのhitTest上書き:

class TextView: NSTextView { 
    override func hitTest(_ point: NSPoint) -> NSView? { 
    return nil 
    } 
} 

をAnが道をカプセル化されたのはなぜ `でここ

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 
    } 
} 
+0

ですinit?(コーダー:NSCoder) '実装されていませんか? – Willeke

+0

@Willekeありがとう、修正されました。 – duan

関連する問題