运行macruby时没有输入NSTextField

时间:2011-08-07 19:43:04

标签: nstextfield macruby

我有一个简单的macruby应用程序,我希望通过NSTextField获得一些用户输入,但是当我使用'''macruby test.rb''运行应用程序时,重点文本字段的所有输入都会进入bash。有什么我需要设置,以获得文本字段的输入?

# 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

2 个答案:

答案 0 :(得分:2)

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

application.activationPolicy = NSApplicationActivationPolicyRegular

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

有关详细信息,请参阅Apple's documentation

您可能还会发现使用以下内容激活您的应用程序很有用:

application.activateIgnoringOtherApps(true) 

如果您使用第二行代码,则值得通过question 5032203阅读。如您所知:窃取焦点被视为不礼貌,因此如果您捆绑了应用以进行分发,则需要将其删除。

答案 1 :(得分:2)

请参阅MacRuby邮件列表中的this thread

要回答这个问题,以下是从命令行启动时让您的应用具有焦点所需的代码:

NSApplication.sharedApplication.activationPolicy = NSApplicationActivationPolicyRegular
NSApplication.sharedApplication.activateIgnoringOtherApps(true)
相关问题