Intereting Posts

Распознаватель жестов с длинным нажатием, перемежающийся со списком в UITableView

У меня возникли проблемы с добавлением длинного жестта печати в мой UITableView. Ну, технически, у меня есть длинный распознаватель жестов нажатия, но я установил минимальную длительность кранов до 0,08. Я сделал это, потому что хочу иметь одно и то же общее действие для нажатия и удержания ячейки, но действие изменяется только в зависимости от того, как долго удерживалась ячейка. Во всяком случае, вот код, в котором я добавляю распознаватель жестов (в viewDidLoad ):

  var longPress:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "handleLongPress:") longPress.minimumPressDuration = 0.08 longPress.delegate = self longPress.cancelsTouchesInView = false self.tableView.addGestureRecognizer(longPress) self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(longPress) 

В моей функции handleLongPress() я получаю CGPoint, где было длинное нажатие, а затем получить из таблицы tableView.

Поэтому, в основном, если я быстро прокручиваю (например, если я щелкнул по экрану), представление таблицы отлично прокручивается. Если я пытаюсь прокручивать медленно, длительное событие прессования срабатывает, и я не могу прокручивать.

Все, что я хочу сделать, – это медленно прокручивать, я хочу, чтобы стиль прокрутки по умолчанию для просмотра по умолчанию перекрывал любое длинное нажатие.

Благодаря!

ScrollViews имеют свойство panGestureRecognizer , вы можете вызвать requireGestureRecognizerToFail для своего долгого распознавателя с помощью panGestureRecognizer scrollView в качестве аргумента, и он будет работать только в том случае, если жест панорамы в прокрутке отсутствует.

Эта категория может решить вашу проблему:

 @interface UITableView (CellSwipeAdditions) - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; @end @implementation UITableView (CellSwipeAdditions) - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } @end