module UnderOs::UI::Events
Special, UI
avare events API
Constants
- RECOGNIZERS
- TOUCH_EVENTS
Public Instance Methods
emit(*event)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 20 def emit(*event) if event.is_a?(UIGestureRecognizer) name, r = find_recognizer_from(event.class) event = Event.new(event, self, name) else # emits by a name event = Event.new(nil, self, *event) end UnderOs::Events::Listeners.kick(self, event, {}) end
off(event)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 16 def off(event) UnderOs::Events::Listeners.remove(self, event) end
on(event, *args, &block)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 6 def on(event, *args, &block) return event.map{|e,b| self.on(e,&b)}[0] || self if event.is_a?(Hash) @_.userInteractionEnabled = true event = add_ui_event_listener(event) UnderOs::Events::Listeners.add(self, event, *args, block) end
on=(hash)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 31 def on=(hash) on hash end
Private Instance Methods
add_ui_event_listener(event)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 114 def add_ui_event_listener(event) event = event.to_sym if event.is_a?(String) event = try_add_touch_event_listener(event) event, recognizer = find_recognizer_from(event) @_.addGestureRecognizer(recognizer.alloc.initWithTarget(self, action: :emit)) if recognizer event end
find_recognizer_from(event)
click to toggle source
tries to figure event name and gesture recognizer
# File lib/under_os/ui/utils/events.rb, line 144 def find_recognizer_from(event) if event.is_a?(Class) && event < UIGestureRecognizer recognizer = event if recognizer.respond_to?(:event_name) event = recognizer.event_name else RECOGNIZERS.each{ |e,r| event = e if r == recognizer } end elsif RECOGNIZERS[event] recognizer = RECOGNIZERS[event] end [event, recognizer] end
try_add_touch_event_listener(event)
click to toggle source
# File lib/under_os/ui/utils/events.rb, line 126 def try_add_touch_event_listener(event) if TOUCH_EVENTS.include?(event) UnderOs::UI::Events::TouchListeners.add(event, self) end event end