Sha256: 637f5db3fa70402774abe3ca5189cb1edb2eecb87da5668d7a97b35641e53a8e
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
class UIControl # event blocks need to be retained, and the addTarget method explicitly does # *not* retain `target`. This makes sure that callbacks are retained by # pushing the block onto a stack. def sugarcube_callbacks @sugarcube_callbacks ||= Hash.new { |hash, key| hash[key] = [] } end # Add event handlers to UIControls # # @example # button = UIButton.alloc.initWithFrame([0, 0, 10, 10]) # button.on(:touch) { my_code } # button.on(:touchupoutside, :touchcancel) { my_code } def on(*events, &block) events.each do |event| event = event.uicontrolevent unless event.is_a? Fixnum sugarcube_callbacks[event].push block addTarget(block, action: :call, forControlEvents:event) puts("=============== uicontrol.rb at line 22 =============== block: #{block.inspect} event: #{event.inspect}") end self end # Removes all events that were bound with `on`. # # @example # button.off(:touch) # button.off(:touchupoutside, :touchcancel) def off(*events) events.each do |event| event = event.uicontrolevent unless event.is_a? Fixnum sugarcube_callbacks[event].each do |block| self.removeTarget(block, action: :call, forControlEvents:event) end sugarcube_callbacks.delete(event) end self end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sugarcube-0.9.1 | lib/sugarcube/uicontrol.rb |