私はMacRubyを使用してCoreAnimationプログラミングを行っています。考えられることをすべて試し、検索しました(おそらく、「純粋な」macrubyでは実行できません)が、MacRubyコードのブロックを呼び出す完了ブロックとして指定する方法がわかりません。アニメーショントランザクションが終了したとき。私がやりたいことをする方法は他にもあることは知っていますが、これは私にとって最もクリーンであり、Cocoaで物事が動いている方法のようです。とにかく、これは私が持っているものです:
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock(...) <---- Here's the problem
CATransaction.commit # end the transaction
'setCompletionBlock'行がないと、アニメーションは正常に実行されます。このセッターメソッドのパラメーターは、(Objective-Cでは)次のように定義されています。
void (^)(void))block
そして、次のように説明されています:
「このトランザクショングループのアニメーションが完了したときに呼び出されるブロックオブジェクト。ブロックオブジェクトはパラメータを受け取らず、値を返しません。」
私はさまざまなことを試しました(しかし、私はこの時点で推測しています):
CATransaction.setCompletionBlock({ some code })
CATransaction.setCompletionBlock(Proc.new { some code })
CATransaction.setCompletionBlock(lambda { some code })
CATransaction.setCompletionBlock(method(:aMethod))
...
def aMethod
...
end
私は道を離れていますか?それを行うには、ある種のObjective-Cラッパーを作成する必要がありますか?それともできませんか?
前もって感謝します