motion-form 0.0.1 → 0.0.2
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 +4 -4
- data/lib/motion-form.rb +4 -7
- data/lib/project/cells/button_cell.rb +2 -0
- data/lib/project/cells/text_field_cell.rb +3 -0
- data/lib/project/form/base.rb +2 -0
- data/lib/project/motion-form.rb +3 -0
- data/lib/project/rows/button_row.rb +3 -0
- data/lib/project/rows/text_field_row.rb +3 -0
- data/lib/project/section/section.rb +3 -0
- data/lib/project/views/section_header_view.rb +2 -0
- metadata +15 -2
- data/lib/project/keyboard_avoiding_delegate.rb +0 -113
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e0b0b39d5e8a5cf433f524a477bf7ca3f04ef31
|
4
|
+
data.tar.gz: a689dbf3679b8725d52bc978d9264794c853bf3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6240ecd1b5189c6623f5e88e20d33e34750a67ff9aa39a1048f4193c875f0719a36aee5ffe57f60de0acff35e051e93c0001d26f40f09634bd6934f06603649c
|
7
|
+
data.tar.gz: d979704d5683e4ccba8cf5d326f195e7d967f2ee89dd415264cf140d5d16d762fb2892b00dc20812e2021a25c291dc9bbd4749b4dae2783ae1d4523a2a297f0c
|
data/lib/motion-form.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'bubble-wrap/core'
|
2
|
+
require 'motion-require'
|
3
|
+
|
4
|
+
Motion::Require.all(Dir.glob(File.expand_path('../project/**/*.rb', __FILE__)))
|
4
5
|
|
5
|
-
lib_dir_path = File.dirname(File.expand_path(__FILE__))
|
6
|
-
Motion::Project::App.setup do |app|
|
7
|
-
app.files.unshift(Dir.glob(File.join(lib_dir_path, "project/**/*.rb")))
|
8
|
-
end
|
data/lib/project/form/base.rb
CHANGED
data/lib/project/motion-form.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Devon Blandin
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: motion-require
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.3
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,7 +66,6 @@ files:
|
|
52
66
|
- lib/project/cells/text_field_cell.rb
|
53
67
|
- lib/project/controllers/form_controller.rb
|
54
68
|
- lib/project/form/base.rb
|
55
|
-
- lib/project/keyboard_avoiding_delegate.rb
|
56
69
|
- lib/project/motion-form.rb
|
57
70
|
- lib/project/rows/base_row.rb
|
58
71
|
- lib/project/rows/button_row.rb
|
@@ -1,113 +0,0 @@
|
|
1
|
-
class KeyboardAvoidingDelegate
|
2
|
-
KEYBOARD_ANIMATION_DURATION = 0.3
|
3
|
-
MINIMUM_SCROLL_FRACTION = 0.2
|
4
|
-
MAXIMUM_SCROLL_FRACTION = 0.8
|
5
|
-
PORTRAIT_KEYBOARD_HEIGHT = 216.0
|
6
|
-
LANDSCAPE_KEYBOARD_HEIGHT = 162.0
|
7
|
-
|
8
|
-
attr_accessor :view, :animated_distance, :active_text_field
|
9
|
-
|
10
|
-
def initialize(view)
|
11
|
-
self.view = view
|
12
|
-
|
13
|
-
add_tap_recognizer
|
14
|
-
listen_to_notifications
|
15
|
-
end
|
16
|
-
|
17
|
-
def listen_to_notifications
|
18
|
-
observers << notification_center.addObserver(self, selector: 'did_begin_editing:', name: 'FormCellDidBeginEditing', object: nil)
|
19
|
-
observers << notification_center.addObserver(self, selector: 'did_end_editing:', name: 'FormCellDidEndEditing', object: nil)
|
20
|
-
end
|
21
|
-
|
22
|
-
def notification_center
|
23
|
-
NSNotificationCenter.defaultCenter
|
24
|
-
end
|
25
|
-
|
26
|
-
def did_begin_editing(notification)
|
27
|
-
textFieldDidBeginEditing(notification.userInfo[:text_field])
|
28
|
-
end
|
29
|
-
|
30
|
-
def did_end_editing(notification)
|
31
|
-
textFieldDidEndEditing(notification.userInfo[:text_field])
|
32
|
-
end
|
33
|
-
|
34
|
-
def observers
|
35
|
-
@observers ||= []
|
36
|
-
end
|
37
|
-
|
38
|
-
def remove_all_observers
|
39
|
-
observers.each do |observer|
|
40
|
-
notification_center.removeObserver(observer)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def dealloc
|
45
|
-
remove_all_observers
|
46
|
-
end
|
47
|
-
|
48
|
-
def add_tap_recognizer
|
49
|
-
view.addGestureRecognizer(tap_recognizer)
|
50
|
-
end
|
51
|
-
|
52
|
-
def tap_recognizer
|
53
|
-
UITapGestureRecognizer.alloc.initWithTarget(self, action: 'dismiss_keyboard')
|
54
|
-
end
|
55
|
-
|
56
|
-
def dismiss_keyboard
|
57
|
-
active_text_field.resignFirstResponder if active_text_field
|
58
|
-
end
|
59
|
-
|
60
|
-
def textFieldDidBeginEditing(text_field)
|
61
|
-
self.active_text_field = text_field
|
62
|
-
|
63
|
-
text_field_rect = view.window.convertRect(text_field.bounds, fromView: text_field)
|
64
|
-
view_rect = view.window.convertRect(view.bounds, fromView: view)
|
65
|
-
midline = text_field_rect.origin.y + 0.5 * text_field_rect.size.height
|
66
|
-
numerator = midline - view_rect.origin.y - MINIMUM_SCROLL_FRACTION * view_rect.size.height
|
67
|
-
denominator = (MAXIMUM_SCROLL_FRACTION - MINIMUM_SCROLL_FRACTION) * view_rect.size.height
|
68
|
-
height_fraction = numerator / denominator
|
69
|
-
|
70
|
-
if height_fraction < 0.0
|
71
|
-
height_fraction = 0.0
|
72
|
-
elsif height_fraction > 1.0
|
73
|
-
height_fraction = 1.0
|
74
|
-
end
|
75
|
-
|
76
|
-
orientation = UIApplication.sharedApplication.statusBarOrientation
|
77
|
-
if orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown
|
78
|
-
self.animated_distance = (PORTRAIT_KEYBOARD_HEIGHT * height_fraction).floor
|
79
|
-
else
|
80
|
-
self.animated_distance = (LANDSCAPE_KEYBOARD_HEIGHT * height_fraction).floor
|
81
|
-
end
|
82
|
-
|
83
|
-
view_frame = view.frame
|
84
|
-
view_frame.origin.y -= animated_distance
|
85
|
-
|
86
|
-
UIView.beginAnimations(nil, context: nil)
|
87
|
-
UIView.setAnimationBeginsFromCurrentState(true)
|
88
|
-
UIView.setAnimationDuration(KEYBOARD_ANIMATION_DURATION)
|
89
|
-
|
90
|
-
view.setFrame(view_frame)
|
91
|
-
|
92
|
-
UIView.commitAnimations
|
93
|
-
end
|
94
|
-
|
95
|
-
def textFieldDidEndEditing(text_field)
|
96
|
-
view_frame = view.frame
|
97
|
-
view_frame.origin.y += animated_distance
|
98
|
-
|
99
|
-
UIView.beginAnimations(nil, context: nil)
|
100
|
-
UIView.setAnimationBeginsFromCurrentState(true)
|
101
|
-
UIView.setAnimationDuration(KEYBOARD_ANIMATION_DURATION)
|
102
|
-
|
103
|
-
view.setFrame(view_frame)
|
104
|
-
|
105
|
-
UIView.commitAnimations
|
106
|
-
end
|
107
|
-
|
108
|
-
def textFieldShouldReturn(text_field)
|
109
|
-
text_field.resignFirstResponder
|
110
|
-
|
111
|
-
true
|
112
|
-
end
|
113
|
-
end
|