Я работаю над созданием Popover IntelliSense, в котором отображается пользователь, который вводит текстовое поле, какой синтаксис действителен. Кто-нибудь знает, как показать NSPopover, не давая ему фокус, чтобы пользователь мог продолжать вводить текст в текстовое поле? Поповер инициируется controlTextDidChange:Показать NSPopover без фокуса
- (void) controlTextDidChange:(NSNotification *)obj
{
NSTextField *field = [obj object];
NSString *command = [field stringValue];
if ([[command substringFromIndex: command.length - 1] isEqualToString: @"#"]){
CompletionMenuController *completionController = [[CompletionMenuController alloc] initWithNibName: @"CompletionMenuController" bundle:[NSBundle mainBundle]];
completionMenuPopover = [[NSPopoverInformation alloc] init];
[completionMenuPopover setContentViewController: completionController];
[completionMenuPopover setContentSize: completionController.view.frame.size];
[completionMenuPopover setBehavior: NSPopoverBehaviorTransient];
[completionMenuPopover setAppearance: NSPopoverAppearanceHUD];
[completionMenuPopover showRelativeToRect:[_commandBar frame] ofView:_commandBar preferredEdge:NSMaxYEdge];
}
}
'[textView beFirstResponder];' после того, как вы покажете popover? – nhgrif
@nhgrif, пожалуйста, прочитайте документацию о '-becomeFirstResponder'. Кроме того, установка фокуса назад на текстовое представление не то же самое, что не потерять фокус. –
Я разместил это как вопрос, а не как ответ. Я не знал, будет ли это работать или нет, поэтому он не отправлен в качестве ответа. Это очень простая строка кода для входа и посмотреть, работает ли она или нет, и это первое, что я попробую, прежде чем я опубликую этот вопрос. Вопроситель не упомянул об этом, поэтому решил, что это стоит того. – nhgrif