objective-c – 在Cocoa Mac OSX中设置FirstResponder的问题

objective-c – 在Cocoa Mac OSX中设置FirstResponder的问题,第1张

概述我正在研究一个小应用程序只是为了学习可可,我很难将FirstResponder设置为某些NSTextFields. 当视图打开时,我想要选择第一个NSTextField,clientNumber,所以我在loadView方法的末尾触发[clientNumber becomeFirstResponder],但是它没有选择文本字段. 但是,当我单击触发(IBAction)addToArray方法的按钮 我正在研究一个小应用程序只是为了学习可可,我很难将FirstResponder设置为某些NSTextFIElds.

当视图打开时,我想要选择第一个NSTextFIEld,clIEntNumber,所以我在loadVIEw方法的末尾触发[clIEntNumber becomeFirstResponder],但是它没有选择文本字段.
但是,当我单击触发(IBAction)addToArray方法的按钮时,它会选择正确的文本字段.我还有另一个文本字段,它应该只包含整数,所以我有一个粗略的验证.当内容不是int时,我会发出一声嘟嘟声,就像它应该的那样,但它不会选择文本字段.

这是我的代码:

- (ID)initWithNibname:(Nsstring *)nibnameOrNil bundle:(NSBundle *)nibBundleOrNil{    self = [super initWithNibname:nibnameOrNil bundle:nibBundleOrNil];    if (self) {      NSLog(@"initWithNibname");    }    return self;}- (voID)vIEwWillLoad {    NSLog(@"vIEwWillLoad");}- (voID)vIEwDIDLoad {    NSLog(@"vIEwDIDLoad");    [self initNewInvoice];    }- (voID)loadVIEw {    NSLog(@"loadVIEw");    [self vIEwWillLoad];    [super loadVIEw];    [self vIEwDIDLoad];    FakturaAppDelegate *appDelegate = (FakturaAppDelegate *)[[NSApplication sharedApplication] delegate];     [appDelegate.window makeFirstResponder:self.clIEntNumber]; }- (voID)awakeFromNib{    NSLog(@"awakeFromNib");}- (IBAction)saveInvoice:(ID)sender{    FakturaAppDelegate *appDelegate = (FakturaAppDelegate *)[[NSApplication sharedApplication] delegate];     [appDelegate.window makeFirstResponder:self.invoiceCredit]; }- (IBAction)addToArray:(ID)sender{    [clIEntNumber setStringValue: @"Toodeloo"];    FakturaAppDelegate *appDelegate = (FakturaAppDelegate *)[[NSApplication sharedApplication] delegate];     [appDelegate.window makeFirstResponder:self.clIEntNumber];  }- (IBAction)updateCreditDays:(ID)sender{    if(invoiceCredit.intValue){        [self updateCredit];    }else{        NSBeep();        FakturaAppDelegate *appDelegate = (FakturaAppDelegate *)[[NSApplication sharedApplication] delegate];     [appDelegate.window makeFirstResponder:self.invoiceCredit];     }}

我真的希望有人可以帮助我.

编辑:

我完全错了,感谢指针,但是当我修复代码时,使用这个:
    FakturaAppDelegate * appDelegate =(FakturaAppDelegate *)[[NSApplication sharedApplication] delegate];
    [appDelegate.window makeFirstResponder:self.invoiceCredit];
而不是成为第一个响应者.但它仍然无法奏效.

解决方法 你正在努力实现这一目标.

在Interface Builder中,将窗口的initialFirstResponder出口设置为指向文本字段.

而已.

如果您绝对必须以编程方式执行此 *** 作,请使用:

[window setinitialFirstResponder:yourTextFIEld];

记住,如果你和Cocoa一起做一些看起来应该很简单的事情,那么你可能做错了.

总结

以上是内存溢出为你收集整理的objective-c – 在Cocoa Mac OSX中设置FirstResponder的问题全部内容,希望文章能够帮你解决objective-c – 在Cocoa Mac OSX中设置FirstResponder的问题所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存