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.
7 8 9 |
# File 'lib/project/form/base.rb', line 7 def keyboard_avoiding_delegate @keyboard_avoiding_delegate end |
Instance Method Details
#build_section(title) ⇒ Object
66 67 68 69 70 |
# File 'lib/project/form/base.rb', line 66 def build_section(title) MotionForm::Section.new(title).tap do |section| sections << section end end |
#did_begin_editing(notification) ⇒ Object
40 41 42 43 44 |
# File 'lib/project/form/base.rb', line 40 def did_begin_editing(notification) unless window.nil? keyboard_avoiding_delegate.textFieldDidBeginEditing(notification.userInfo[:text_field]) end end |
#did_end_editing(notification) ⇒ Object
46 47 48 49 50 |
# File 'lib/project/form/base.rb', line 46 def did_end_editing(notification) unless window.nil? keyboard_avoiding_delegate.textFieldDidEndEditing(notification.userInfo[:text_field]) end end |
#init ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/project/form/base.rb', line 9 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
35 36 37 38 |
# File 'lib/project/form/base.rb', line 35 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
56 57 58 |
# File 'lib/project/form/base.rb', line 56 def notification_center NSNotificationCenter.defaultCenter end |
#numberOfSectionsInTableView(table_view) ⇒ Object
82 83 84 |
# File 'lib/project/form/base.rb', line 82 def numberOfSectionsInTableView(table_view) sections.count end |
#observers ⇒ Object
52 53 54 |
# File 'lib/project/form/base.rb', line 52 def observers @observers ||= [] end |
#register_cells ⇒ Object
76 77 78 79 80 |
# File 'lib/project/form/base.rb', line 76 def register_cells MotionForm.registered_cells.each do |klass| registerClass(klass, forCellReuseIdentifier: klass::IDENTIFIER) end end |
#render ⇒ Object
141 142 143 144 145 |
# File 'lib/project/form/base.rb', line 141 def render notification_center.postNotificationName('FormWillRender', object: self, userInfo: nil) Hash[render_values] end |
#render_values ⇒ Object
147 148 149 |
# File 'lib/project/form/base.rb', line 147 def render_values value_rows.map { |row| [row.key, row.value] } end |
#rows ⇒ Object
122 123 124 |
# File 'lib/project/form/base.rb', line 122 def rows sections.map(&:rows).flatten end |
#section(title = '') ⇒ Object
60 61 62 63 64 |
# File 'lib/project/form/base.rb', line 60 def section(title = '') build_section(title).tap do |section| yield section end end |
#sections ⇒ Object
72 73 74 |
# File 'lib/project/form/base.rb', line 72 def sections @sections ||= [] end |
#tableView(table_view, cellForRowAtIndexPath: index_path) ⇒ Object
86 87 88 |
# File 'lib/project/form/base.rb', line 86 def tableView(table_view, numberOfRowsInSection: section_index) sections[section_index].rows.count end |
#tap_recognizer ⇒ Object
25 26 27 28 29 |
# File 'lib/project/form/base.rb', line 25 def tap_recognizer @tap_recognizer ||= UITapGestureRecognizer.alloc.init.tap do |recognizer| recognizer.addTarget(self, action: 'tapped:') end end |
#tapped(recognizer) ⇒ Object
31 32 33 |
# File 'lib/project/form/base.rb', line 31 def tapped(recognizer) endEditing(true) end |
#valid? ⇒ Boolean
126 127 128 129 130 |
# File 'lib/project/form/base.rb', line 126 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
151 152 153 |
# File 'lib/project/form/base.rb', line 151 def value_rows rows.select { |row| row.has_value? } end |