Табличка TableCell игнорируется, когда она находится внутри коллекции. - PullRequest
0 голосов
/ 03 сентября 2018

Вопрос и объяснение ситуации

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

В каждой ячейке viewview у меня есть таблица, которая также занимает весь размер этой ячейки collectionview. Я пытаюсь реализовать конечное и ведущее действие прокрутки в моей ячейке таблицы, но оно игнорируется из-за жеста прокрутки для прокрутки ячеек коллекции.

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


Альтернативное решение (временное решение)

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

Так что после поиска и поиска в стеке потока, похоже, есть другие люди с такой же проблемой, как у меня, но, похоже, не может найти ответ. Таким образом, у меня возникла другая идея, и я хотел бы поделиться, чтобы, если кто-то сталкивался с этой проблемой, у него был выбор на выбор.

Моя идея заключается в добавлении регулятора жестов длинным нажатием для просмотра таблицы, которого вы можете достичь, как описано в swift 4

func setupLongPressGesture() {
    let longPressGesture: UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongPress))
    longPressGesture.minimumPressDuration = 1.0 // 1 second press
    longPressGesture.delegate = self
    dataDisplayTable.addGestureRecognizer(longPressGesture)
}

@objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer){
    if gestureRecognizer.state == .began {
        let touchPoint = gestureRecognizer.location(in: dataDisplayTable)
        if let indexPath = dataDisplayTable.indexPathForRow(at: touchPoint) {
            // let cell = dataDisplayTable.cellForRow(at: indexPath) - use this to retreive the cell at the above indexPath to do something with it
            // print(cell?.reuseIdentifier) - use this to retreive the cell identifier and do something with it
        }
    }
}

Затем добавьте это в свой viewDidLoad ()

setupLongPressGesture()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...