sugarcube 3.3.7 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d3fac9ee41dbe6575a593c28e8ca78d4c4845cb
4
- data.tar.gz: 4337469e97bb91230469148a7e43b7c033d5e1bc
3
+ metadata.gz: 7c825347c6958710f5ee4933a8f1f0505b1c04df
4
+ data.tar.gz: f92835087ed01e21e55609e2b91deba8a6f7b83f
5
5
  SHA512:
6
- metadata.gz: b73398655be28dce273a7ac5eafcb45572246feacddba87ba090db204576760a1d31f2969615868dbf78d57be732f878b851da3b0c14088bb094a076ba3dc34f
7
- data.tar.gz: e9f30fdbaba910e761e6f146ca9bc3b6a376f0594cb714f496e50e64dc588298776f0f268f7806837d467d2c49f7e154a28af12704c955839c58af31846f0669
6
+ metadata.gz: a20731556cd87e0a446650fac5e1d60528e7869f8a8d388e4e43610a33ea42f4e95a50af74a0f875d3e9995d40d7d5f6953347dab4770d78150b5cb35917be23
7
+ data.tar.gz: a1ace56fcca4ac03c2d8d62ce56dc74640cd1120c180946b3f09b90c084847dfae3d6f8d42578d4f1d94a37d803dbc6c9380e3a3e2040c6e946abd1184d4cb6f
data/README.md CHANGED
@@ -440,6 +440,9 @@ view.on_pan(2) # minimum and maximum fingers required
440
440
  view.on_pan(fingers: 2)
441
441
  view.on_pan(min_fingers: 2, max_fingers: 3)
442
442
 
443
+ # If present, overrides fingers options and instead handles gestures originating at specified screen edges (UIScreenEdgePanGestureRecognizer)
444
+ view.on_pan(edges: [<list>]) # Some combination of [:left, :right, :top, :bottom, :all].
445
+
443
446
  # `on_press` is a continuous event (it uses UILongPressGestureRecognizer), so
444
447
  # you need to check the `gesture`:
445
448
  view.on_press do |gesture|
@@ -248,6 +248,12 @@ class Symbol
248
248
  def uigesturerecognizerstate
249
249
  SugarCube.look_in(self, Symbol.uigesturerecognizerstate)
250
250
  end
251
+
252
+ def uirectedge
253
+ SugarCube.look_in(self, Symbol.uirectedge)
254
+ end
255
+
256
+
251
257
  alias uigesturestate uigesturerecognizerstate
252
258
 
253
259
  class << self
@@ -324,6 +330,8 @@ class Symbol
324
330
 
325
331
  attr :uigesturerecognizerstate
326
332
 
333
+ attr :uirectedge
334
+
327
335
  end
328
336
 
329
337
  @uidevice = {
@@ -892,4 +900,15 @@ class Symbol
892
900
  recognized: UIGestureRecognizerStateRecognized,
893
901
  }
894
902
 
903
+
904
+ @uirectedge = {
905
+ left: UIRectEdgeLeft,
906
+ right: UIRectEdgeRight,
907
+ top: UIRectEdgeTop,
908
+ bottom: UIRectEdgeBottom,
909
+ none: UIRectEdgeNone,
910
+ all: UIRectEdgeAll
911
+ }
912
+
913
+
895
914
  end
@@ -121,14 +121,18 @@ class UIView
121
121
  # @option options [Fixnum] :min_fingers Minimum number of fingers for gesture to be recognized
122
122
  # @option options [Fixnum] :max_fingers Maximum number of fingers for gesture to be recognized
123
123
  # @option options [Fixnum] :fingers If min_fingers or max_fingers is not assigned, this will be the default.
124
+ # @option options [Array] :edges Some combination of [:left, :right, :top, :bottom, :all]. If present, overrides fingers options and instead handles gestures originating at specified screen edges.
124
125
  def on_pan(fingers_or_options=nil, &proc)
125
126
  fingers = nil
127
+ edge_options = [:none]
126
128
  min_fingers = nil
127
129
  max_fingers = nil
130
+ recognizer = nil
128
131
 
129
132
  if fingers_or_options
130
133
  if fingers_or_options.is_a? Hash
131
134
  fingers = fingers_or_options[:fingers] || fingers
135
+ edge_options = fingers_or_options[:edges] || edge_options
132
136
  min_fingers = fingers_or_options[:min_fingers] || min_fingers
133
137
  max_fingers = fingers_or_options[:max_fingers] || max_fingers
134
138
  else
@@ -136,13 +140,21 @@ class UIView
136
140
  end
137
141
  end
138
142
 
139
- # if fingers is assigned, but not min/max, assign it as a default
140
- min_fingers ||= fingers
141
- max_fingers ||= fingers
142
-
143
- recognizer = UIPanGestureRecognizer.alloc.initWithTarget(self, action:'sugarcube_handle_gesture:')
144
- recognizer.maximumNumberOfTouches = min_fingers if min_fingers
145
- recognizer.minimumNumberOfTouches = max_fingers if max_fingers
143
+ if edge_options.uniq == [:none] # full view pan, possibly with finger options
144
+ # if fingers is assigned, but not min/max, assign it as a default
145
+ min_fingers ||= fingers
146
+ max_fingers ||= fingers
147
+ recognizer = UIPanGestureRecognizer.alloc.initWithTarget(self, action:'sugarcube_handle_gesture:')
148
+ recognizer.maximumNumberOfTouches = min_fingers if min_fingers
149
+ recognizer.minimumNumberOfTouches = max_fingers if max_fingers
150
+ else #edges option, finger options ignored
151
+ edges = :none.uirectedge
152
+ edge_options.each do | edge |
153
+ edges |= (edge.uirectedge || 0)
154
+ end
155
+ recognizer = UIScreenEdgePanGestureRecognizer.alloc.initWithTarget(self, action:'sugarcube_handle_gesture:')
156
+ recognizer.edges = edges
157
+ end
146
158
  sugarcube_add_gesture(proc, recognizer)
147
159
  end
148
160
 
@@ -1,3 +1,3 @@
1
1
  module SugarCube
2
- Version = '3.3.7'
2
+ Version = '3.4.0'
3
3
  end
@@ -69,7 +69,7 @@ describe 'Gestures' do
69
69
  @view.gestureRecognizers.should.include?(gesture)
70
70
  end
71
71
 
72
- it 'should work with options' do
72
+ it 'should work with fingers options' do
73
73
  gesture = @view.on_pan(min_fingers: 2, max_fingers: 2) do |gesture|
74
74
  end
75
75
  gesture.should.be.kind_of(UIPanGestureRecognizer)
@@ -77,6 +77,25 @@ describe 'Gestures' do
77
77
  gesture.minimumNumberOfTouches.should == 2
78
78
  @view.gestureRecognizers.should.include?(gesture)
79
79
  end
80
+
81
+ it 'should work with edges option' do
82
+ gesture = @view.on_pan(edges: [:top, :left]) do |gesture|
83
+ end
84
+ gesture.should.be.kind_of(UIScreenEdgePanGestureRecognizer)
85
+ gesture.edges.should == (:left.uirectedge + :top.uirectedge)
86
+ @view.gestureRecognizers.should.include?(gesture)
87
+ end
88
+
89
+ it 'should ignore :none edges option' do
90
+ gesture = @view.on_pan(edges: [:none], min_fingers: 2, max_fingers: 2) do |gesture|
91
+ end
92
+ gesture.should.be.kind_of(UIPanGestureRecognizer)
93
+ gesture.maximumNumberOfTouches.should == 2
94
+ gesture.minimumNumberOfTouches.should == 2
95
+ @view.gestureRecognizers.should.include?(gesture)
96
+ end
97
+
98
+
80
99
  end
81
100
 
82
101
  describe 'on_press' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugarcube
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.7
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin T.A. Gray
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-09-08 00:00:00.000000000 Z
15
+ date: 2016-07-27 00:00:00.000000000 Z
16
16
  dependencies: []
17
17
  description: |
18
18
  == Description
@@ -312,17 +312,17 @@ require_paths:
312
312
  - lib
313
313
  required_ruby_version: !ruby/object:Gem::Requirement
314
314
  requirements:
315
- - - '>='
315
+ - - ">="
316
316
  - !ruby/object:Gem::Version
317
317
  version: '0'
318
318
  required_rubygems_version: !ruby/object:Gem::Requirement
319
319
  requirements:
320
- - - '>='
320
+ - - ">="
321
321
  - !ruby/object:Gem::Version
322
322
  version: '0'
323
323
  requirements: []
324
324
  rubyforge_project:
325
- rubygems_version: 2.4.5
325
+ rubygems_version: 2.4.5.1
326
326
  signing_key:
327
327
  specification_version: 4
328
328
  summary: Extensions for Ruby to make Rubymotion development more enjoyable, and hopefully