Class: Formotion::RowType::TextRow
- Includes:
- BW::KVO
- Defined in:
- lib/formotion/row_type/text_row.rb
Constant Summary collapse
- TEXT_VIEW_TAG =
1000
Instance Attribute Summary collapse
-
#field ⇒ Object
Returns the value of attribute field.
Attributes inherited from Base
Instance Method Summary collapse
- #build_cell(cell) ⇒ Object
- #dismissKeyboard ⇒ Object
- #on_select(tableView, tableViewDelegate) ⇒ Object
Methods inherited from Base
#_on_select, #after_build, #after_delete, #break_with_semaphore, #button?, #cellEditingStyle, #cell_style, #delete_row, field_buffer, #indentWhileEditing?, #initialize, #on_delete, #update_cell, #with_semaphore
Constructor Details
This class inherits a constructor from Formotion::RowType::Base
Instance Attribute Details
#field ⇒ Object
Returns the value of attribute field.
10 11 12 |
# File 'lib/formotion/row_type/text_row.rb', line 10 def field @field end |
Instance Method Details
#build_cell(cell) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 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 79 |
# File 'lib/formotion/row_type/text_row.rb', line 12 def build_cell(cell) cell.selectionStyle = self.row.selection_style || UITableViewCellSelectionStyleBlue @field = UITextView.alloc.initWithFrame(CGRectZero) field.backgroundColor = UIColor.clearColor field.editable = true field.tag = TEXT_VIEW_TAG field.text = row.value field.returnKeyType = row.return_key || UIReturnKeyDefault field.autocapitalizationType = row.auto_capitalization if row.auto_capitalization field.autocorrectionType = row.auto_correction if row.auto_correction # must be set prior to placeholder! field.font = BW::Font.new(row.font) if row.font field.placeholder = row.placeholder field.enabled = row.editable? field.on_begin do |text_field| row.on_begin_callback && row.on_begin_callback.call @tap_gesture.enabled = true end field.should_begin? do |text_field| row.section.form.active_row = row true end observe(self.row, "value") do |old_value, new_value| break_with_semaphore do field.text = row.value end end field.on_change do |text_field| break_with_semaphore do row.value = text_field.text end end field.on_end do |text_field| @tap_gesture.enabled = false end @tap_gesture = UITapGestureRecognizer.alloc.initWithTarget self, action:'dismissKeyboard' @tap_gesture.enabled = false cell.addGestureRecognizer @tap_gesture cell.swizzle(:layoutSubviews) do def layoutSubviews old_layoutSubviews # viewWithTag is terrible, but I think it's ok to use here... formotion_field = self.viewWithTag(TEXT_VIEW_TAG) formotion_field.sizeToFit field_frame = formotion_field.frame field_frame.origin.y = 10 field_frame.origin.x = self.textLabel.frame.origin.x + self.textLabel.frame.size.width + Formotion::RowType::Base.field_buffer field_frame.size.width = self.frame.size.width - field_frame.origin.x - Formotion::RowType::Base.field_buffer field_frame.size.height = self.frame.size.height - Formotion::RowType::Base.field_buffer formotion_field.frame = field_frame end end cell.addSubview(field) field end |
#dismissKeyboard ⇒ Object
88 89 90 |
# File 'lib/formotion/row_type/text_row.rb', line 88 def dismissKeyboard field.resignFirstResponder end |
#on_select(tableView, tableViewDelegate) ⇒ Object
81 82 83 84 85 86 |
# File 'lib/formotion/row_type/text_row.rb', line 81 def on_select(tableView, tableViewDelegate) if !row.editable? return end field.becomeFirstResponder end |