2011-08-07 68 views
2

當我有一個簡單的MacRuby應用程序,我想通過的NSTextField得到一些用戶的輸入,但是當我運行「」「的MacRuby test.rb」「」上的所有輸入的應用焦點文本字段進入bash。有什麼我需要設置,以獲得輸入到文本字段?沒有輸入的NSTextField運行MacRuby的

# 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

您需要添加以下代碼(application.run之前的任何地方):

application.activationPolicy = NSApplicationActivationPolicyRegular 

我是很新的MacRuby的自己,但是這似乎是必要的,因爲默認的激活策略非捆綁應用程序是「NSApplicationActivationPolicyProhibited」。

有關更多詳細信息,請參見Apple's documentation

您也可能會發現,激活與以下應用程序:

application.activateIgnoringOtherApps(true) 

如果您使用此代碼第二行是值得通過question 5032203讀。正如你所知道的那樣:竊取焦點被認爲是不禮貌的,所以如果你將你的應用程序捆綁在一起進行分發,你會想刪除它。

+0

謝謝,我是有這個問題,這對我來說真是棒極了。我想知道爲什麼這不是在MacRuby教程中提到的?似乎很重要,因爲它都不明顯,這是需要得到什麼東西才能正常工作。 –

2

this thread的MacRuby的郵件列表上。

要回答這個問題,這裏是讓命令行啓動時,您的應用程序具有焦點所需的代碼:

NSApplication.sharedApplication.activationPolicy = NSApplicationActivationPolicyRegular 
NSApplication.sharedApplication.activateIgnoringOtherApps(true) 
+0

請將其添加到MacRuby的書! – phoet

+0

剛剛在書上加了一個小紙條。 –