cocoa – 如何防止NSSearchField使用第一个自动完成列表条目覆盖输入的字符串?

cocoa – 如何防止NSSearchField使用第一个自动完成列表条目覆盖输入的字符串?,第1张

概述我正在寻找一种方法来创建一个行为如下的nssearchfield: >文本中的用户类型 >基于匹配,出现自动完成下拉列表 >搜索字段中的文本不会自动完成列表中的第一项 关键是,我的字符串匹配搜索文本字段中的任何子字符串和自动完成都不起作用,因为它会覆盖我输入的字符串.事实上,这应该是默认行为,还是我误解了搜索字段的目的? 进一步键入将进一步限制列表,但只有在自动填充下拉列表中选择项目后,该项目才会 我正在寻找一种方法来创建一个行为如下的nssearchfIEld:

>文本中的用户类型
>基于匹配,出现自动完成下拉列表
>搜索字段中的文本不会自动完成列表中的第一项

关键是,我的字符串匹配搜索文本字段中的任何子字符串和自动完成都不起作用,因为它会覆盖我输入的字符串.事实上,这应该是默认行为,还是我误解了搜索字段的目的?
进一步键入将进一步限制列表,但只有在自动填充下拉列表中选择项目后,该项目才会插入到文本字段中.

如果使用nssearchfIEld无法完成此 *** 作,还有其他选择吗?

解决方法 我自己的解决方案实际上非常简单:只需将搜索字符串本身添加到自动完成的建议列表中.
这是在NSSearchFIEld委托方法控件中完成的:textVIEw:completions:forPartialWordRange:indexOfSelectedItem ::

...partialString = [[textVIEw string] substringWithRange:charRange];...matches       = [NSMutableArray array];// find any match in our keyword array against what was typed -for (i=0; i< count; i++){string = [keywords objectAtIndex:i];if ([string     rangeOfString:partialString     options: NSCaseInsensitiveSearch | NSForcedOrderingSearch     range:NSMakeRange (0,[string length])]    .location != NSNotFound) {  [matches addobject:string]; }}[matches sortUsingSelector:@selector(compare:)];//  Make sure we insert the already entered string,even if it does not//  match with any of the retrIEved keywords. This will enter this string//  in the search fIEld,as we intended,and it will not be overwritten //  with any match.[matches insertObject:partialString atIndex: 0];return matches;
总结

以上是内存溢出为你收集整理的cocoa – 如何防止NSSearchField使用第一个自动完成列表条目覆盖输入的字符串?全部内容,希望文章能够帮你解决cocoa – 如何防止NSSearchField使用第一个自动完成列表条目覆盖输入的字符串?所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1011905.html

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

发表评论

登录后才能评论

评论列表(0条)

保存