2015-08-29 1 views
8

Я пытаюсь добавить распознаватель жестов к объекту (изображение, в частности) в ячейке таблицы. Теперь я знаком с распознавателями жестов, но я немного смутился о том, как это сделать. Фактическая ячейка таблицы не имеет метода viewDidLoad, поэтому я не думаю, что могу объявить распознаватель жестов.Swift - добавить распознаватель жестов к объекту в ячейке таблицы

Этот вопрос (UIGestureRecognizer and UITableViewCell issue) кажется связанным, однако ответ находится в объективе C, и, к сожалению, я свободно говорю быстро.

Если бы кто-нибудь мог помочь мне в том, как я собираюсь добавить распознаватель жестов к объекту в ячейке таблицы (НЕ весь просмотр таблицы) или даже, возможно, помогу мне в переводе ответа из приведенной выше ссылки на swift, я был бы благодарен

ответ

15

Вот быстрый Свифт-перевод решения Связанной Посты, добавив салфетки жеста распознаватель к UITableView, а затем определить, какие клетки прикосновения произошло:

class MyViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     var recognizer = UISwipeGestureRecognizer(target: self, action: "didSwipe") 
     self.tableView.addGestureRecognizer(recognizer) 
    } 

    func didSwipe(recognizer: UIGestureRecognizer) { 
     if recognizer.state == UIGestureRecognizerState.Ended { 
      let swipeLocation = recognizer.locationInView(self.tableView) 
      if let swipedIndexPath = tableView.indexPathForRowAtPoint(swipeLocation) { 
       if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath) { 
        // Swipe happened. Do stuff! 
       } 
      } 
     } 
    } 

} 
+0

Хотя оба ответа были верны, я выбрал этот, поскольку он был более полным. Огромное спасибо :) –

2

здесь вы идете. Swift вариант решения вы упомянули в своем вопросе

«Вместо добавления жест распознаватель в клетку непосредственно, вы можете добавить его в Tableview в viewDidLoad.

В didSwipe-метода можно определить влияние IndexPath и клетки следующим образом:»

func didSwipe(gestureRecognizer:UIGestureRecognizer) { 
    if gestureRecognizer.state == UIGestureRecognizerState.Ended { 
     let swipeLocation = gestureRecognizer.locationInView(self.tableView) 
      if let swipedIndexPath = self.tableView.indexPathForRowAtPoint(swipeLocation){ 
      if let swipedCell = self.tableView.cellForRowAtIndexPath(swipedIndexPath!){ 


     } 
    } 
    } 
} 
Смежные вопросы