UICollectionView didSelectRowAt никогда не вызывается - PullRequest
0 голосов
/ 01 февраля 2019

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

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

@IBOutlet weak var templatesCollection: UICollectionView!

   override func viewDidLoad() {
        super.viewDidLoad()
        templatesCollection.delegate = self
        templatesCollection.dataSource = self
    }

    extension AddCardViewController : UICollectionViewDelegate,UICollectionViewDataSource
{


    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return templates.count
    }


    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = templatesCollection.dequeueReusableCell(withReuseIdentifier: "template", for: indexPath) as! TemplateCollectionViewCell
        cell.templateView.text = templates[indexPath.row]
        cell.alignTextVertically()
        cell.isUserInteractionEnabled = true
        cell.layer.shadowColor = UIColor.black.cgColor
        cell.layer.shadowOffset = CGSize(width: 0, height: 2.0)
        cell.layer.shadowRadius = 2.0
        cell.layer.shadowOpacity = 0.5
        cell.layer.masksToBounds = false

        return cell
    }

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        print("shfgdsfgidks")
    }

        func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
            print("Deselected")
        }

    }

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

Взаимодействие с пользователем включено и для collectionView, и для его ячейкитакже вот картинка моей иерархии

enter image description here

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Если у кого-то есть такая же проблема, вот исправление. Как предположил Парф, я не получал щелчок, поскольку щелчок идет для TextView.Мне пришлось отключить взаимодействие с пользователем для TextView, который находится внутри ячейки, чтобы регистрировать щелчки по ячейке.

0 голосов
/ 01 февраля 2019

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

Обычно, если вам нужно это сделать, обычно лучше всего встраивать UICollectionView в UITableViewCell для создания макета.Не зная точно, что вы пытаетесь сделать, трудно предложить лучший подход

Если вы должны сделать это таким образом, вам нужно взглянуть на UIGestureRecogniserDelegate и настроить определенные жестычто они оба могут распознать одновременно.

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