objective-c – NSTextFinder以编程方式设置搜索字符串并清除视觉反馈

objective-c – NSTextFinder以编程方式设置搜索字符串并清除视觉反馈,第1张

概述我有一个使用查找栏的NSTextView([textView setUsesFindBar:YES];). 我有两个问题. >如何清除查找 *** 作的视觉反馈? 当我以编程方式更改textView的内容时,我的问题就出现了.在内容改变之后,对先前内容的搜索 *** 作的视觉反馈保持不变.显然这些黄色框不适用于新内容,因此在更改textView内容时我需要一种方法来清除它们. 注意:我没有实现NSTextFind 我有一个使用查找栏的NSTextVIEw([textVIEw setUsesFindbar:YES];).

我有两个问题.

>如何清除查找 *** 作的视觉反馈?

当我以编程方式更改textVIEw的内容时,我的问题就出现了.在内容改变之后,对先前内容的搜索 *** 作的视觉反馈保持不变.显然这些黄色框不适用于新内容,因此在更改textVIEw内容时我需要一种方法来清除它们.

注意:我没有实现NSTextFinderClIEnt协议,因为我有一个简单的textVIEw,而查找栏只是工作而没有任何其他的努力.
>如何将搜索字符串发送到查找栏?

解决方法 我找到了答案,所以对于其他人来说,这是怎么做的.

首先,您需要一个NSTextFinder实例,以便您可以控制它.我们在代码中设置了它.

textFinder = [[NSTextFinder alloc] init];[textFinder setClIEnt:textVIEw];[textFinder setFindbarContainer:[textVIEw enclosingScrollVIEw]];[textVIEw setUsesFindbar:YES];[textVIEw setIncrementalSearchingEnabled:YES];

第一个答案:为了清除视觉反馈,我可以做两件事.我可以取消视觉反馈……

[textFinder cancelFindindicator];

或者我可以提醒NSTextFinder我即将更改我的textVIEw内容…

[textFinder noteClIEntStringWillChange];

第二个答案:有一个全球的NSFindPboard.您可以使用它来设置搜索.

// change the NSFindPboard NSPasteboardTypestringNSPasteboard* pBoard = [NSPasteboard pasteboarDWithname:NSFindPboard];[pBoard declareTypes:[NSArray arrayWithObjects:NSPasteboardTypestring,NSPasteboardTypeTextFinderOptions,nil] owner:nil];[pBoard setString:@"new search" forType:NsstringPboardType];NSDictionary* options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],NSTextFinderCaseInsensitiveKey,[NSNumber numberWithInteger:NSTextFinderMatchingTypeContains],NSTextFinderMatchingTypeKey,nil];[pBoard setPropertyList:options forType:NSPasteboardTypeTextFinderOptions];// put the new search string in the find bar[textFinder cancelFindindicator];[textFinder performAction:NSTextFinderActionSetSearchString];[textFinder performAction:NSTextFinderActionShowFindInterface]; // make sure the find bar is showing

但是有一个问题.在该代码之后,查找栏中的实际文本字段不会更新.我发现如果我切换第一个响应者然后我可以让它更新…

[myWindow makeFirstResponder:outlineVIEw];[myWindow makeFirstResponder:textVIEw];
总结

以上是内存溢出为你收集整理的objective-c – NSTextFinder以编程方式设置搜索字符串并清除视觉反馈全部内容,希望文章能够帮你解决objective-c – NSTextFinder以编程方式设置搜索字符串并清除视觉反馈所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1033000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存