Module: ProMotion::Table::Longpressable

Included in:
ProMotion::Table
Defined in:
lib/ProMotion/table/extensions/longpressable.rb

Instance Method Summary collapse

Instance Method Details

#make_longpressable(params = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/ProMotion/table/extensions/longpressable.rb', line 5

def make_longpressable(params={})
  params = {
    min_duration: 1.0
  }.merge(params)

  long_press_gesture = UILongPressGestureRecognizer.alloc.initWithTarget(self, action:"on_long_press:")
  long_press_gesture.minimumPressDuration = params[:min_duration]
  long_press_gesture.delegate = self
  self.table_view.addGestureRecognizer(long_press_gesture)
end

#on_long_press(gesture) ⇒ Object



16
17
18
19
20
21
22
23
24
# File 'lib/ProMotion/table/extensions/longpressable.rb', line 16

def on_long_press(gesture)
  return unless gesture.state == UIGestureRecognizerStateBegan
  gesture_point = gesture.locationInView(pressed_table_view)
  index_path = pressed_table_view.indexPathForRowAtPoint(gesture_point)
  return unless index_path
  data_cell = self.promotion_table_data.cell(index_path: index_path)
  return unless data_cell
  trigger_action(data_cell[:long_press_action], data_cell[:arguments], index_path) if data_cell[:long_press_action]
end