Распознаватель жестов влияет на другие функции

#ios #swift

#iOS #swift

Вопрос:

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

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

Теперь, когда эта функция удаления работает, я больше не могу нажимать на ячейки, чтобы открыть новый контроллер представления с соответствующей информацией. Есть ли способ добавить условие, чтобы распознавание касаний выполнялось только во время тряски ячеек, чтобы функция CollectionView работала при нажатии на ячейку в представлении коллекции?

 override func viewDidLoad() {
    super.viewDidLoad()

    let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressed))

    let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.tapPressed))

    self.collectionView.addGestureRecognizer(longPressRecognizer)
    self.collectionView.addGestureRecognizer(tapRecognizer)
}


//Tap screen
@objc func tapPressed(sender: UITapGestureRecognizer)  {
    stopCellShaking()
}


 
 //Open the information for the selected cell
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        
        //Function to open new screen
        showInformation(chosenCell: exampleList[indexPath.row])

    }

 

Ответ №1:

Есть ли способ добавить условие, чтобы распознаватель нажатий срабатывал только при встряхивании ячеек

Абсолютно. В общем, просто отключите распознаватель прикосновений, установив для него isEnabled значение false . Когда начнется встряхивание (длительное нажатие), установите для распознавателя жестов касания isEnabled true значение .