Class: MotionForm::Base
- Inherits:
-
UITableView
- Object
- UITableView
- MotionForm::Base
- Defined in:
- lib/project/form/base.rb
Instance Attribute Summary collapse
-
#keyboard_avoiding_delegate ⇒ Object
readonly
Returns the value of attribute keyboard_avoiding_delegate.
Instance Method Summary collapse
- #build_section(title) ⇒ Object
- #did_begin_editing(notification) ⇒ Object
- #did_end_editing(notification) ⇒ Object
- #init ⇒ Object
- #listen ⇒ Object
- #notification_center ⇒ Object
- #numberOfSectionsInTableView(table_view) ⇒ Object
- #observers ⇒ Object
- #register_cells ⇒ Object
- #render ⇒ Object
- #render_values ⇒ Object
- #rows ⇒ Object
- #section(title = '') ⇒ Object
- #sections ⇒ Object
- #tableView(table_view, cellForRowAtIndexPath: index_path) ⇒ Object
- #tap_recognizer ⇒ Object
- #tapped(recognizer) ⇒ Object
- #valid? ⇒ Boolean
- #value_rows ⇒ Object
Instance Attribute Details
#keyboard_avoiding_delegate ⇒ Object (readonly)
Returns the value of attribute keyboard_avoiding_delegate.
5 6 7 |
# File 'lib/project/form/base.rb', line 5 def keyboard_avoiding_delegate @keyboard_avoiding_delegate end |
Instance Method Details
#build_section(title) ⇒ Object
64 65 66 67 68 |
# File 'lib/project/form/base.rb', line 64 def build_section(title) MotionForm::Section.new(title).tap do |section| sections << section end end |
#did_begin_editing(notification) ⇒ Object
38 39 40 41 42 |
# File 'lib/project/form/base.rb', line 38 def did_begin_editing(notification) unless window.nil? keyboard_avoiding_delegate.textFieldDidBeginEditing(notification.userInfo[:text_field]) end end |
#did_end_editing(notification) ⇒ Object
44 45 46 47 48 |
# File 'lib/project/form/base.rb', line 44 def did_end_editing(notification) unless window.nil? keyboard_avoiding_delegate.textFieldDidEndEditing(notification.userInfo[:text_field]) end end |
#init ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/project/form/base.rb', line 7 def init initWithFrame(frame, style: UITableViewStylePlain).tap do |f| f.register_cells f.translatesAutoresizingMaskIntoConstraints = false f.dataSource = self f.delegate = self f.addGestureRecognizer(tap_recognizer) @keyboard_avoiding_delegate = Motion::KeyboardAvoiding.new(f) listen end end |
#listen ⇒ Object
33 34 35 36 |
# File 'lib/project/form/base.rb', line 33 def listen observers << notification_center.addObserver(self, selector: 'did_begin_editing:', name: 'FormCellDidBeginEditing', object: nil) observers << notification_center.addObserver(self, selector: 'did_end_editing:', name: 'FormCellDidEndEditing', object: nil) end |
#notification_center ⇒ Object
54 55 56 |
# File 'lib/project/form/base.rb', line 54 def notification_center NSNotificationCenter.defaultCenter end |
#numberOfSectionsInTableView(table_view) ⇒ Object
80 81 82 |
# File 'lib/project/form/base.rb', line 80 def numberOfSectionsInTableView(table_view) sections.count end |
#observers ⇒ Object
50 51 52 |
# File 'lib/project/form/base.rb', line 50 def observers @observers ||= [] end |
#register_cells ⇒ Object
74 75 76 77 78 |
# File 'lib/project/form/base.rb', line 74 def register_cells MotionForm.registered_cells.each do |klass| registerClass(klass, forCellReuseIdentifier: klass::IDENTIFIER) end end |
#render ⇒ Object
139 140 141 142 143 |
# File 'lib/project/form/base.rb', line 139 def render notification_center.postNotificationName('FormWillRender', object: self, userInfo: nil) Hash[render_values] end |
#render_values ⇒ Object
145 146 147 |
# File 'lib/project/form/base.rb', line 145 def render_values value_rows.map { |row| [row.key, row.value] } end |
#rows ⇒ Object
120 121 122 |
# File 'lib/project/form/base.rb', line 120 def rows sections.map(&:rows).flatten end |
#section(title = '') ⇒ Object
58 59 60 61 62 |
# File 'lib/project/form/base.rb', line 58 def section(title = '') build_section(title).tap do |section| yield section end end |
#sections ⇒ Object
70 71 72 |
# File 'lib/project/form/base.rb', line 70 def sections @sections ||= [] end |
#tableView(table_view, cellForRowAtIndexPath: index_path) ⇒ Object
84 85 86 |
# File 'lib/project/form/base.rb', line 84 def tableView(table_view, numberOfRowsInSection: section_index) sections[section_index].rows.count end |
#tap_recognizer ⇒ Object
23 24 25 26 27 |
# File 'lib/project/form/base.rb', line 23 def tap_recognizer @tap_recognizer ||= UITapGestureRecognizer.alloc.init.tap do |recognizer| recognizer.addTarget(self, action: 'tapped:') end end |
#tapped(recognizer) ⇒ Object
29 30 31 |
# File 'lib/project/form/base.rb', line 29 def tapped(recognizer) endEditing(true) end |
#valid? ⇒ Boolean
124 125 126 127 128 |
# File 'lib/project/form/base.rb', line 124 def valid? notification_center.postNotificationName('FormWillValidate', object: self, userInfo: nil) rows.select { |row| row.is_a? TextInputRow }.all? { |row| row.valid? } end |
#value_rows ⇒ Object
149 150 151 |
# File 'lib/project/form/base.rb', line 149 def value_rows rows.select { |row| row.has_value? } end |