【发布时间】:2013-02-28 02:29:34
【问题描述】:
这似乎应该很容易,但谁能给我指点如何做到这一点?似乎我应该继承 NSTextView 并使用 drawInsertionPointInRect:color:turnedOn: 但我该怎么做呢?我真的不想做大的定制,可能只是稍微厚一点或者稍微短一点,但问题是在哪里?
谢谢,
rc
【问题讨论】:
标签: macos cocoa nstextfield nstextview nssearchfield
这似乎应该很容易,但谁能给我指点如何做到这一点?似乎我应该继承 NSTextView 并使用 drawInsertionPointInRect:color:turnedOn: 但我该怎么做呢?我真的不想做大的定制,可能只是稍微厚一点或者稍微短一点,但问题是在哪里?
谢谢,
rc
【问题讨论】:
标签: macos cocoa nstextfield nstextview nssearchfield
这并不直接,因为NSSearchField 是NSTextField 的子类,而不是NSTextView。但是,每个NSTextField 都使用一个代理NSTextView 来进行绘图,而这个代理NSTextView(称为字段编辑器)由当前窗口维护。因此,您要做的是创建您的自定义 NSTextView 子类,在您的窗口控制器(或您用作窗口委托的任何地方)中将其实例化,然后创建以下方法:windowWillReturnFieldEditor:toObject:。
在方法中,您检查 toObject 是否是您的搜索字段(或只是任何搜索字段,以防您想为窗口中的每个搜索字段覆盖它),然后返回您的自定义 NSTextView,否则返回 @ 987654331@用于具有默认行为的默认字段编辑器。
【讨论】: