cocoa – 防止在NSTokenField中选择所有令牌

cocoa – 防止在NSTokenField中选择所有令牌,第1张

概述是否有任何方法可以阻止NSTokenField在按ENTER键时选择所有内容,或者当使用TAB键向第一个响应者发送时? NSTokenField是NSTextField的子类.直接 *** 作这些类的选择没有简单直接的方法(除了-selectText:,它选择全部). 要在它成为第一个响应者时执行此 *** 作,您需要继承NSTokenField(请记住将XIB中的字段类设置为自定义子类的字段)并覆盖-becom 是否有任何方法可以阻止NSTokenFIEld在按ENTER键时选择所有内容,或者当使用TAB键向第一个响应者发送时?解决方法 NSTokenFIEld是NSTextFIEld的子类.直接 *** 作这些类的选择没有简单直接的方法(除了-selectText:,它选择全部).

要在它成为第一个响应者时执行此 *** 作,您需要继承NSTokenFIEld(请记住将XIB中的字段类设置为自定义子类的字段)并覆盖-becomeFirstResponder,如下所示:

- (BOol)becomeFirstResponder{    if ([super becomeFirstResponder])    {        // If super became first responder,we can get the        // fIEld editor and manipulate its selection directly        NSText * fIEldEditor = [[self window] fIEldEditor:YES forObject:self];        [fIEldEditor setSelectedRange:NSMakeRange([[fIEldEditor string] length],0)];        return YES;    }    return NO;}

此代码首先查看超级回答“是”(并成为第一个响应者).如果是,我们知道它将有一个字段编辑器(一个NSText实例),我们可以直接 *** 作它们的选择.所以我们得到它的字段编辑器并设置它的选定范围(我将插入点放在最后一个{lastchar,nolength}范围内).

要在字段完成编辑(返回,跳出等)时执行此 *** 作,请覆盖-textDIDEndEditing:如下所示:

- (voID)textDIDEndEditing:(NSNotification *)aNotification{    [super textDIDEndEditing:aNotification];    NSText * fIEldEditor = [[self window] fIEldEditor:YES forObject:self];    [fIEldEditor setSelectedRange:NSMakeRange([[fIEldEditor string] length],0)];}

在这种情况下,当用户结束编辑时,此方法让super执行其 *** 作,然后查看它是否仍然是第一个响应者.如果是,则它与上面相同:将插入克拉放在字段的末尾.

请注意,此行为不是标准的,并且是意外的.谨慎使用.

总结

以上是内存溢出为你收集整理的cocoa – 防止在NSTokenField中选择所有令牌全部内容,希望文章能够帮你解决cocoa – 防止在NSTokenField中选择所有令牌所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存