nstextfield - 运行macruby时没有输入到NSTextField

标签 nstextfield macruby

我有一个简单的macruby应用程序,我想通过 NSTextField 获取一些用户输入,但是当我使用 '''macruby test.rb''' 运行应用程序时,聚焦文本字段上的所有输入都会进入狂欢。我需要设置什么才能将输入输入到文本字段中吗?

# test.rb
framework 'AppKit'

application = NSApplication.sharedApplication
frame = [0.0, 0.0, 300, 200]
window = NSWindow.alloc.initWithContentRect(frame,
                                            styleMask: NSTitledWindowMask | NSClosableWindowMask,
                                            backing: NSBackingStoreBuffered,
                                            defer: false)

content_view = NSView.alloc.initWithFrame(frame)
window.contentView = content_view

tf = NSTextField.alloc.initWithFrame([125, 30, 120, 20])
window.contentView.addSubview(tf)

window.display
window.makeKeyAndOrderFront(nil)

application.run

最佳答案

您需要添加以下代码(在 application.run 之前的任何位置):

application.activationPolicy = NSApplicationActivationPolicyRegular

我自己对 MacRuby 还很陌生,但这似乎是必要的,因为非捆绑应用程序的默认激活策略是“NSApplicationActivationPolicyProhibited”。

参见Apple's documentation了解更多详情。

您可能还会发现通过以下方式激活您的应用程序很有用:

application.activateIgnoringOtherApps(true) 

如果您使用第二行代码,则值得通读 question 5032203 。如您所知:窃取焦点被认为是不礼貌的,因此如果您曾捆绑应用程序进行分发,则需要删除此行为。

关于nstextfield - 运行macruby时没有输入到NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975325/

相关文章:

ruby - MacRuby NSTextView 添加文本挂起程序

objective-c - 如何将徽章添加到来源列表?

objective-c - 未调用 NSTextField 自动完成委托(delegate)方法

cocoa - 标签对齐

macos - 为什么当我按 F1、F2 等时会选择此功能键?

objective-c - 计算文本容器的高度

swift - 隐藏 NSSearchField 的 lupe 图标

ruby-on-rails - ruby 存储在 mac 上的什么位置?

xcode - MacRuby HotCocoa $ macrake//错误

cocoa - 如何让基于 NSDocument 的应用程序打开文件夹,但将关联的文档保存到应用程序支持?