Cocoa:停止字段编辑器自动完成空格键

Cocoa:停止字段编辑器自动完成空格键,第1张

概述我有一个带有几个NSTextField控件的自定义视图,我想为其提供自定义自动完成功能,并且我已使用NSTextFieldDelegate协议成功实现了所有这些控件.自动完成是全名或地名,具体取决于正在编辑的文本字段. 问题是自动完成几乎总是包含空格字符,因此如果用户键入的内容与建议相符,但又不想接受该建议,则当用户按下空格键时,字段编辑器将接受该建议. .我希望字段编辑器仅使用Tab键接受建议. 我有一个带有几个NSTextFIEld控件的自定义视图,我想为其提供自定义自动完成功能,并且我已使用NSTextFIEldDelegate协议成功实现了所有这些控件.自动完成是全名或地名,具体取决于正在编辑的文本字段.

问题是自动完成几乎总是包含空格字符,因此如果用户键入的内容与建议相符,但又不想接受该建议,则当用户按下空格键时,字段编辑器将接受该建议. .我希望字段编辑器仅使用Tab键接受建议.

我理解这将涉及子类化NSTextVIEw以提供自定义字段编辑器,这是documented by Apple作为可接受的方式,但是我不清楚我需要覆盖哪些方法以及被覆盖的方法需要做什么,以便获得我想要的是什么.

谁能建议如何实现这一目标?

@H_404_16@解决方法@H_419_17@ 我承认,在 I discovered an acceptable answer via Google-fu.之前,我一直在摸索这个问题已经很久了.魔术代码,从原来的回答者公然偷走了:

@interface MLFIEldEditor : NSTextVIEw @end@implementation MLFIEldEditor-  (voID)insertCompletion:(Nsstring *)word forPartialWordRange:(NSRange)charRange movement:(NSInteger)movement isFinal:(BOol)flag {    // suppress completion if user types a space    if (movement == NSRightTextMovement) return;    // show full replacements    if (charRange.location != 0) {        charRange.length += charRange.location;        charRange.location = 0;    }    [super insertCompletion:word forPartialWordRange:charRange movement:movement isFinal:flag];    if (movement == NSReturnTextMovement)    {        [[NSNotificationCenter defaultCenter] postNotificationname:MLSearchFIEldautocompleted object:self userInfo:nil];    } }@end

(Additional reference)

总结

以上是内存溢出为你收集整理的Cocoa:停止字段编辑器自动完成空格键全部内容,希望文章能够帮你解决Cocoa:停止字段编辑器自动完成空格键所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存