Я работаю над крошечным приложением, чтобы узнать какао, и мне трудно установить FirstResponder для некоторых NSTextFields.
Когда открывается представление, я хочу, чтобы был выбран первый NSTextField, clientNumber, поэтому я запускаю [clientNumber intoFirstResponder] в конце моего метода loadView, но он не выбирает текстовое поле.
Но когда я нажимаю кнопку, которая запускает метод addToArray (IBAction), он выбирает правильное текстовое поле. Далее у меня есть еще одно текстовое поле, оно должно содержать только целые числа, поэтому у меня есть грубая проверка для него. Когда содержимое не является целым, я получаю звуковой сигнал, как и должно быть, но текстовое поле не выделяется.
Вот мой код:
- (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];
}
}
Я действительно надеюсь, что кто-то может помочь мне здесь.
EDIT:
Я все понял неправильно, спасибо за указатели, но когда я исправляю код, использую это:
FakturaAppDelegate * appDelegate = (FakturaAppDelegate *) [[NSApplication sharedApplication] делегат];
[appDelegate.window makeFirstResponder: self.invoiceCredit];
вместо стать первым ответчиком. Но это все еще не работает.