Macos 从NSStatusItem进入NSPover时,NSTextField未启用

Macos 从NSStatusItem进入NSPover时,NSTextField未启用,macos,nstextfield,nspopover,Macos,Nstextfield,Nspopover,这个问题得到了回答,但因为StackOverflow不允许你发表评论,除非你有一定的声誉,所以我不得不创建另一个线程。我完全按照回答中的解释做了,运气不好。这是10.9版本的Xcode 5。我在构建设置中添加了NSWindow+CanBecomeKeyWindow.m。因为这是一个只有状态栏的应用程序,所以我的应用程序在plist中设置为“是”,并且我没有在应用程序中使用任何窗口。有没有办法用Mavericks实现这一点 NSWindow+canBecomeKeyWindow.h @interf

这个问题得到了回答,但因为StackOverflow不允许你发表评论,除非你有一定的声誉,所以我不得不创建另一个线程。我完全按照回答中的解释做了,运气不好。这是10.9版本的Xcode 5。我在构建设置中添加了NSWindow+CanBecomeKeyWindow.m。因为这是一个只有状态栏的应用程序,所以我的应用程序在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

让它工作起来。您必须完全清除接口和实现代码,以便覆盖NSWindow canBecomeKeyWindow方法。完全按照上面列出的操作,并确保.m文件在构建阶段列出。

请编辑您的答案,以包括您的实际实现。即使您的实现与链接问题相同,您的情况也明显不同,因此提供相关代码将非常有用,并将有助于google搜索该问题的未来实例。