Module: MotionWiretap::Gestures

Defined in:
lib/motion-wiretap/ios/wiretap_gestures.rb

Overview

Some gesture recognizer translators. Based on SugarCube’s gesture recognizer methods.

Class Method Summary collapse

Class Method Details

.tap(taps) ⇒ Object .tap(options) ⇒ Object

Overloads:

  • .tap(taps) ⇒ Object

    Parameters:

    • taps (Fixnum)

      Number of taps

  • .tap(options) ⇒ Object

    Options Hash (options):

    • :min_fingers (Fixnum)

      Minimum umber of fingers for gesture to be recognized

    • :max_fingers (Fixnum)

      Maximum number of fingers for gesture to be recognized

    • :fingers (Fixnum)

      If min_fingers or max_fingers is not assigned, this will be the default.

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 87

def pan(target, fingers_or_options=nil)
  fingers = nil
  min_fingers = nil
  max_fingers = nil

  if fingers_or_options
    if fingers_or_options.is_a? Hash
      fingers = fingers_or_options[:fingers] || fingers
      min_fingers = fingers_or_options[:min_fingers] || min_fingers
      max_fingers = fingers_or_options[:max_fingers] || max_fingers
    else
      fingers = fingers_or_options
    end
  end

  # if fingers is assigned, but not min/max, assign it as a default
  min_fingers ||= fingers
  max_fingers ||= fingers

  recognizer = UIPanGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  recognizer.maximumNumberOfTouches = min_fingers if min_fingers
  recognizer.minimumNumberOfTouches = max_fingers if max_fingers
  return recognizer
end

.pinch(target) {|recognizer| ... } ⇒ Object

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



33
34
35
36
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 33

def pinch(target)
  recognizer = UIPinchGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  return recognizer
end

.press(duration) ⇒ Object .press(options) ⇒ Object

Overloads:

  • .press(duration) ⇒ Object

    Parameters:

    • duration (Fixnum)

      How long in seconds before gesture is recognized

  • .press(options) ⇒ Object

    Options Hash (options):

    • :duration (Fixnum)

      How long in seconds before gesture is recognized

    • :taps (Fixnum)

      Number of taps before gesture is recognized

    • :fingers (Fixnum)

      Number of fingers before gesture is recognized

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 119

def press(target, duration_or_options=nil)
  duration = nil
  taps = nil
  fingers = nil

  if duration_or_options
    if duration_or_options.is_a? Hash
      duration = duration_or_options[:duration] || duration
      taps = duration_or_options[:taps] || taps
      fingers = duration_or_options[:fingers] || fingers
    else
      duration = duration_or_options
    end
  end

  recognizer = UILongPressGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  recognizer.minimumPressDuration = duration if duration
  recognizer.numberOfTapsRequired = taps if taps
  recognizer.numberOfTouchesRequired = fingers if fingers
  return recognizer
end

.rotate(target) {|recognizer| ... } ⇒ Object

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



39
40
41
42
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 39

def rotate(target)
  recognizer = UIRotationGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  return recognizer
end

.swipe(taps) ⇒ Object .swipe(options) ⇒ Object

Overloads:

  • .swipe(taps) ⇒ Object

    Parameters:

    • direction (Fixnum)

      Direction of swipe

  • .swipe(options) ⇒ Object

    Options Hash (options):

    • :fingers (Fixnum)

      Number of fingers before gesture is recognized

    • :direction (Fixnum, Symbol)

      Direction of swipe, as a UISwipeGestureRecognizerDirection constant or a symbol (‘:left, :right, :up, :down`)

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 50

def swipe(target, direction_or_options)
  direction = nil
  fingers = nil

  if direction_or_options
    if direction_or_options.is_a? Hash
      direction = direction_or_options[:direction] || direction
      fingers = direction_or_options[:fingers] || fingers
    else
      direction = direction_or_options
    end
  end

  case direction
  when :left
    direction = UISwipeGestureRecognizerDirectionLeft
  when :right
    direction = UISwipeGestureRecognizerDirectionRight
  when :up
    direction = UISwipeGestureRecognizerDirectionUp
  when :down
    direction = UISwipeGestureRecognizerDirectionDown
  end

  recognizer = UISwipeGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  recognizer.direction = direction if direction
  recognizer.numberOfTouchesRequired = fingers if fingers
  return recognizer
end

.tap(taps) ⇒ Object .tap(options) ⇒ Object

Overloads:

  • .tap(taps) ⇒ Object

    Parameters:

    • taps (Fixnum)

      Number of taps

  • .tap(options) ⇒ Object

    Options Hash (options):

    • :taps (Fixnum)

      Number of taps before gesture is recognized

    • :fingers (Fixnum)

      Number of fingers before gesture is recognized

Yields:

  • (recognizer)

    Handles the gesture event, and passes the recognizer instance to the block.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/motion-wiretap/ios/wiretap_gestures.rb', line 13

def tap(target, taps_or_options=nil)
  taps = nil
  fingers = nil

  if taps_or_options
    if taps_or_options.is_a? Hash
      taps = taps_or_options[:taps] || taps
      fingers = taps_or_options[:fingers] || fingers
    else
      taps = taps_or_options
    end
  end

  recognizer = UITapGestureRecognizer.alloc.initWithTarget(target, action: :handle_gesture)
  recognizer.numberOfTapsRequired = taps if taps
  recognizer.numberOfTouchesRequired = fingers if fingers
  return recognizer
end