NSTextField не включен, когда в NSPopover из NSStatusItem

На этот вопрос дается ответ Невозможность редактировать NSTextField в NSPopover, даже если установлено редактируемое поведение, но поскольку StackOverflow не позволяет вам комментировать, если у вас нет определенной репутации, я должен создать другую тему. Я сделал точно так, как объяснено в ответе, но не повезло. Это на 10.9 с Xcode 5. Я добавил NSWindow+CanBecomeKeyWindow.m в настройки сборки. Поскольку это приложение только для строки состояния, у меня есть Application is Agent, для которого установлено значение YES в plist, и я не использую никаких окон в приложении. Любые идеи, как реализовать это с Mavericks?

NSWindow+canBecomeKeyWindow.h
@interface NSWindow (canBecomeKeyWindow)

@end

NSWindow+canBecomeKeyWindow.m
@implementation NSWindow (canBecomeKeyWindow)

//This is to fix a bug with 10.7 where an NSPopover with a text field cannot be edited if its parent window won't become key
//The pragma statements disable the corresponding warning for overriding an already-implemented method
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (BOOL)canBecomeKeyWindow
{
    return YES;
}
#pragma clang diagnostic pop

@end

person Stephen Donnell    schedule 13.01.2014    source источник
comment
Пожалуйста, отредактируйте свой ответ, чтобы включить фактическую реализацию. Даже если ваша реализация такая же, как и вопрос о ссылке, ваша ситуация, очевидно, отличается, поэтому предоставление соответствующего кода было бы полезно (и поможет в поиске Google для будущих случаев этой проблемы).   -  person nhgrif    schedule 13.01.2014


Ответы (1)


Получил это работает. Вы должны полностью очистить интерфейс и код реализации, чтобы просто переопределить метод NSWindow canBecomeKeyWindow. Сделайте точно так, как указано выше, и убедитесь, что файл .m указан на этапах сборки.

person Stephen Donnell    schedule 14.01.2014