objective-c – 捕获NSTextField中的“up”和“down”键
我写了一个“代理”
Cocoa应用程序,我在文本框中的状态图标的菜单,它看起来像这样:
http://s3.ifotos.pl/img/Zrzut-ekr_hwaqnwa.png 当您使用步进器时,将值减少5.我想要当您将文本字段聚焦并且按“上”或“下”键时,相同的情况 – 值增加或减少5. 我已经弄清楚,我必须使用 – (BOOL)控件:(NSControl *)控件textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector的NSControlTextEditingDelegate协议. 但是我真的很困惑我该怎么做通常我只会做sth.delegate = self;在这里我只是不知道.苹果文档的不友好的语言和我的英文不好,不能帮助我.我试图搜索一个答案,但所有人只是指出控制:textView:…和我的Google搜索能力失败,当我想知道如何使用这种委托方法. 非常感谢提前.请不要打我;) 解决方法
您需要创建一个对象作为文本字段的委托.这可以在代码中完成,或者在Interface Builder中可以完成.你可能已经有一个控制器负责这个领域和步进控制,所以这是一个很好的候选人.这个委托对象是需要实现你提到的方法:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector 每当field editor *的文本字段被要求执行 commandSelector参数保存操作消息的名称.因此,您可以测试您感兴趣的消息(moveUp:和moveDown:在这种情况下)并拦截它们.您执行任何您喜欢的操作,并阻止字段编辑器或文本字段对消息执行操作. - (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector { if( commandSelector == @selector(moveUp:) ){ // Your increment code return YES; // We handled this command; don't pass it on } if( commandSelector == @selector(moveDown:) ){ // Your decrement code return YES; } return NO; // Default handling of the command } *简而言之,一个NSTextView,当字段处于活动状态时,它处理代表文本字段的输入. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |