2016-09-01 3 views
0

Я пытаюсь реализовать действия с одним жестом в моем UITableView, где вы прокручиваете, чтобы отображать кнопки действий, и продолжайте прокручивать все пути, чтобы активировать действие по умолчанию (например, «Удалить» »или« Отметить как прочитанное »в Mail).UITableView действия синтаксического действия с одиночным жестом

Я реализую -tableView:editActionsForRowAtIndexPath: в моем делегате. Моя кнопка появляется, и она срабатывает, когда я нажимаю ее, но она не активируется при полном ударе.

Я пробовал его с -tableView:commitEditingStyle:forRowAtIndexPath: и -tableView:canEditRowAtIndexPath: в моем источнике данных. Только последний называется, но, похоже, не имеет значения.

Есть ли что-то еще, что мне нужно сделать? Или это поведение не реально достижимо с использованием стандартного API?

ответ

0

Я бы постарался проверить, прошел ли проведите мимо определенного порога в целевой функции распознавателя жестов.

Попробуйте

func swipeRight(sender: UIGestureRecognizer){ 
    let threshold : CGFloat = 100; 
    var startLocation = CGPoint() 
    if (sender.state == UIGestureRecognizerState.Began){ 
     startLocation = sender.locationInView(self.view) 
    }else if (sender.state == UIGestureRecognizerState.Ended){ 
     let stopLocation = sender.locationInView(self.view) 
     let distanceX = stopLocation.x - startLocation.x 
     let distanceY = stopLocation.y - startLocation.y 
     let distance = sqrt(distanceX*distanceX + distanceY*distanceY) 
     if (distance > threshold){ 
      //Delete or Edit Row Here 
     } 
    } 
} 
+0

Это было бы, если бы я делал специальную реализацию для кнопок сенсорных. На самом деле, я делаю это (на основе MGSwipeTableCell), но я пытаюсь понять, могу ли я заменить этот подход стандартным API и избавиться от большого количества кода. Используя 'editActionsForRowAtIndexPath', ОС полностью заботится о распознавателе жестов. – Uncommon

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