Class: UIControl
Overview
Additions to UIControl to support jQuery-style on and off methods.
Instance Method Summary collapse
-
#off(*events) ⇒ Object
Removes all events that were bound with
on. -
#on(*events, &block) ⇒ Object
Add event handlers to UIControls.
-
#trigger(*events) ⇒ Object
Useful during testing, or to simulate a button press.
Instance Method Details
#off(*events) ⇒ Object
Removes all events that were bound with on. See symbol.rb for the
uicontrolevent constant aliases.
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sugarcube-events/uicontrol.rb', line 38 def off(*events) if events.length == 0 events = sugarcube_callbacks.keys end events.each do |event| event = event.uicontrolevent if event.respond_to?(:uicontrolevent) sugarcube_callbacks[event].each do |handler| self.removeTarget(handler, action:'call:event:', forControlEvents:event) end sugarcube_callbacks.delete(event) end self end |
#on(*events, &block) ⇒ Object
Add event handlers to UIControls. See symbol.rb for the uicontrolevent constant aliases.
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/sugarcube-events/uicontrol.rb', line 17 def on(*events, &block) handler = SugarCube::UIControlCallbackHelper.new handler.callback = block events.each do |event| event = event.uicontrolevent if event.respond_to?(:uicontrolevent) sugarcube_callbacks[event].push(handler) addTarget(handler, action:'call:event:', forControlEvents:event) end self end |
#trigger(*events) ⇒ Object
Useful during testing, or to simulate a button press.
59 60 61 62 63 64 65 66 |
# File 'lib/sugarcube-events/uicontrol.rb', line 59 def trigger(*events) event_mask = 0 events.each do |event| event = event.uicontrolevent if event.respond_to?(:uicontrolevent) event_mask |= event end sendActionsForControlEvents(event_mask) end |