NSTextField уходит в отставку первого респондента - PullRequest
4 голосов
/ 13 декабря 2010

Я пытаюсь, чтобы мое текстовое поле ушло в отставку первым респондентом, когда пользователь закончил редактировать его, например, когда он нажал клавишу ввода.Метод делегата вызывается, но то, что у меня сейчас не работает, как правильно это сделать?

- (BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor
{
    [fieldEditor resignFirstResponder];
    return YES;
}

Ответы [ 4 ]

22 голосов
/ 13 декабря 2010

Из документов по методу -resignFirstResponder:

Используйте NSWindow makeFirstResponder: метод, а не этот метод, чтобы сделать возразить первому ответчику. Никогда вызовите этот метод напрямую.

Этот код должен сделать это:

[myWindow makeFirstResponder:nil];
7 голосов
/ 27 июля 2015
- (void)controlTextDidEndEditing:(NSNotification *)obj {

   [self.window makeFirstResponder:view];
}

где "view" - родительский NSView вашего элемента управления NSTextView.

0 голосов
/ 09 августа 2013

Я полагаю, вы ищете метод делегата NSControl:

- (void)controlTextDidEndEditing:(NSNotification *)notif

Реализуйте этот метод в своем делегате NSTextField (легко устанавливается в IB).

Затем ваш запрос на изменениереспондент, такой как

[self.window selectNextKeyView:self]

должен работать.

0 голосов
/ 13 декабря 2010

Я пока не разбираюсь в программировании для iPhone, но вам нужно реализовать метод textFieldShouldReturn, реализованный так:

 <code> - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    [theTextField resignFirstResponder];
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...