objective-c – 捕获NSTextField中的“up”和“down”键

前端之家收集整理的这篇文章主要介绍了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 *的文本字段被要求执行NSResponder action messages之一时,该方法将被调用.字段编辑器要求其委托,它是文本字段,它应该做什么,该字段又要求其委托,哪个是你的对象

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,当字段处于活动状态时,它处理代表文本字段的输入.

原文链接:https://www.f2er.com/c/114660.html

猜你在找的C&C++相关文章