【问题标题】:NSTextField not enabled when in NSPopover from NSStatusItem在来自 NSStatusItem 的 NSPopover 中未启用 NSTextField
【发布时间】:2014-01-13 01:26:08
【问题描述】:

这个问题已回答Not being able to edit NSTextField on NSPopover even though Editable behavior is set,但因为 StackOverflow 不允许你发表评论,除非你有一定的声誉,我不得不创建另一个线程。我完全按照答案中的解释做了,没有运气。这是使用 Xcode 5 的 10.9。我将 NSWindow+CanBecomeKeyWindow.m 添加到构建设置中。因为这是一个只有状态栏的应用程序,所以我在 plist 中将 Application is Agent 设置为 YES 并且没有使用应用程序中的任何窗口。有什么想法可以用 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

【问题讨论】:

  • 请编辑您的答案以包括您的实际实施。即使您的实现与链接问题相同,但您的情况显然不同,因此提供相关代码将很有用(并且有助于谷歌搜索此问题的未来实例)。

标签: macos nstextfield nspopover


【解决方案1】:

搞定了。您必须完全清除接口和实现代码,以便您只是覆盖 NSWindow canBecomeKeyWindow 方法。完全按照上面列出的方式进行操作,并确保 .m 文件在您的构建阶段中列出。

【讨论】:

    猜你喜欢
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多