我有两个问题.
>如何清除查找 *** 作的视觉反馈?
当我以编程方式更改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以编程方式设置搜索字符串并清除视觉反馈所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)