1
4

2 に答える 2

0

少し奇妙ですが、回避策は次のとおりです。

framework 'Foundation'
framework 'AppKit'

class KCUpcase
  def upcase(pasteboard, userData: s_userdata, error: s_error)
    incoming_string = pasteboard.stringForType "public.utf8-plain-text"
    outgoing_string = incoming_string.upcase
    pasteboard.clearContents
    pasteboard.setString(outgoing_string, forType: "public.utf8-plain-text")
  end
end

puts "Starting…"
NSRegisterServicesProvider(KCUpcase.new, "Upcase")
puts "Registered…"
later = NSDate.dateWithTimeIntervalSinceNow(5)
NSRunLoop.currentRunLoop.runUntilDate later
puts "Done"

基本的に、ランループ リクエストをディスパッチする前にタイムスタンプを定義する必要があります。そうしないと、命令を取得する前にメイン ループが存在します。お気づきのように、これは実際には MacRuby のバグではありませんが、うまくいけば役に立ちます。

于 2010-11-22T07:55:24.947 に答える
0

acceptInputForMode:beforeDate: ループを 1 回だけ実行します。入力 (タイ​​マー以外) が処理されるとすぐに終了します。runUntilDate: ただし、日付に達するまでループを実行し続けます。

于 2011-01-03T00:30:53.077 に答える