我正在尝试捕获自定义NSTextFinderClient
子类上的所有NSTextView
次调用。
我的-(void)performTextFinderAction:(id)sender
覆盖会调用show动作,但是对于下一个查找,找到之前的等等,它不会被调用。
有什么想法吗?
谢谢!
编辑:
如果您创建一个新项目并从界面构建器拖动NSTextView
,则当查找栏是第一响应者时,command-g和command-shift-g(查找下一个并找到上一个)不起作用。
这是为什么?
我需要NSTextView
的自定义子类来响应每个事件的查找栏。
答案 0 :(得分:2)
查找栏与客户端的NSTextFinder私密通信,而不是调用NSResponder的-performTextFinderAction :.当客户端以外的东西具有关键焦点时,这对于允许查找起作用是必要的。
你想要完成什么?
答案 1 :(得分:2)
我搜索了Apple的TextEdit源代码,因为使用TextEdit,文本视图中的标准搜索栏适用于命令-G(和其他快捷方式),即使搜索字段是第一个响应者。
我找到了解决方案。
转到您的笔尖进入主菜单,然后选择"查找" (和相关的)菜单项。它们应绑定到名为" performFindPanelAction的默认操作:。"现在取消绑定它们并绑定到" performTextFinderAction:"而是第一响应者。
您可能无法在First Responder的动作列表中找到该动作。因此,您需要在First Responder的属性检查器窗格中自行添加它。
这是由下面的文件说的
在OS X v10.7之前,这些菜单项的默认操作是performFindPanelAction:。只要有可能,您应该更新实施以使用此新操作。