【问题标题】:Implementing action on moveUp in NSTextField在 NSTextField 中对 moveUp 执行操作
【发布时间】:2014-05-18 03:35:33
【问题描述】:

所以我刚刚开始进行一些 mac 开发。我的第一个项目是开发一个基于文本的计算器,它只包含两个组件,一个 NSTextField 和一个 NSTextView。 TextField 接受用户输入并在 TextView 中显示答案。我想要的是实现一个功能,如果 TextField 处于活动状态并且按下向上箭头,则输入将通过命令历史记录。我知道如何实现历史功能,但不知道如何捕获按键。我在Capturing "up" and "down" keys pressed in NSTextField中搜索发现,一种方法是实现:

- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(SEL)commandSelector {

问题是由于我对mac开发还很陌生,我仍然不知道如何实现该功能?

【问题讨论】:

  • 这是一个textview的委托函数。你必须在类中创建一个文本字段的属性
  • 您链接到的另一个问题的接受答案显示了如何实现该方法。究竟是什么给你带来了困难?

标签: xcode keypress nstextfield


【解决方案1】:
@interface AppDelgate <NSTextViewDelegate>

@property IBOutlet (nonatomic,strong) NSTextView* myTextView;

@end

@implementation

-(BOOL) applicationDidLaunch(..) {
  myTextView.delegate = self;
}

- (void)keyUp:(NSEvent *)theEvent {
//check theEvent.keyCode (125=up arrow)
}

@end

【讨论】:

  • 无法调用keyUp函数。我的 NSTextField 被称为 inputString,它有一个“引用插座”作为 App Delegate。这个对吗?这是否意味着我不必设置“inputString.delegate = self”,因为 xcode 抱怨并说它应该是“_input....”但是如果我更改应用程序不会启动。
  • 1) 正确 2) 不,它必须是 self.inputString.delegate = self,因为 inputString 是 AppDelegate 的一个属性。
猜你喜欢
  • 2010-11-03
  • 1970-01-01
  • 2010-10-30
  • 2017-04-29
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
相关资源
最近更新 更多