我有一个简单的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
答案 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)