Решением этой проблемы является «завершение редактирования» в методе действия, который вызывается кнопкой OK.Поскольку панель является подклассом NSWindowController
, NSWindow
легко доступен, однако в вашем коде вам, возможно, придется получить NSWindow
через элемент управления, который вы привязали к контроллеру;например NSWindow *window = [_someControl window]
.
Ниже приведена реализация моего метода действия okPressed
.
В целом я считаю, что это лучше решение для установки Постоянно обновляется в связанных элементах управления.
- (IBAction)okPressed:(id)sender
{
NSWindow *window = [self window];
BOOL editingEnded = [window makeFirstResponder:window];
if (!editingEnded)
{
logwrn(@"Unable to end editing");
return;
}
if (_delegateRespondsToEditComplete)
{
[_delegate detailsEditComplete:&_mydetails];
}
}