Hallo,
ich möchte das bei einem tap innerhalb einer ScrollView die ich in einer collectionViewCell erzeuge, sich der Content bzw. die xPostion der ScrollView an die Stelle schiebt an die auch getippt wurde. Da ich so etwas bisher noch nicht gemacht habe, habe ich einfach wild drauf los probiert, jedoch leider nicht mit dem gewünschten Ergebnis.
Mein Plan war es über einen tabGestureRecognizer, die xPosition über setContentOffset zu verschieben. Die ScrollView erfässt diese Taps auch jedoch bekomme ich immer wieder eine Fehlermeldung das die ScrollView nil wäre.
Hat jemand von euch schon mal ähnliches probiert und weiß wie man so etwas handhaben kann ?
Ich hoffe es wird klar was ich probiere
PS: Gutes Beispiel wäre der Discover Bereich von Instagram in dem man ganz oben die Kategorien auswählen kann
Hier der Code
Alles anzeigen
Der Code zur func scrollViewTapped sah vorher wie folgt aus, jedoch hatte ich damit wenig Erfolg da immer die Meldung kam "found nil while unwrapping an optional value":
ich möchte das bei einem tap innerhalb einer ScrollView die ich in einer collectionViewCell erzeuge, sich der Content bzw. die xPostion der ScrollView an die Stelle schiebt an die auch getippt wurde. Da ich so etwas bisher noch nicht gemacht habe, habe ich einfach wild drauf los probiert, jedoch leider nicht mit dem gewünschten Ergebnis.
Mein Plan war es über einen tabGestureRecognizer, die xPosition über setContentOffset zu verschieben. Die ScrollView erfässt diese Taps auch jedoch bekomme ich immer wieder eine Fehlermeldung das die ScrollView nil wäre.
Hat jemand von euch schon mal ähnliches probiert und weiß wie man so etwas handhaben kann ?
Ich hoffe es wird klar was ich probiere
PS: Gutes Beispiel wäre der Discover Bereich von Instagram in dem man ganz oben die Kategorien auswählen kann
Hier der Code
Quellcode
- func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
- let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Header", for: indexPath as IndexPath) as! TestCollectionReusableView
- let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(scrollViewTapped(recognizer:)))
- tapGestureRecognizer.numberOfTapsRequired = 1
- headerView.scrollView.addGestureRecognizer(tapGestureRecognizer)
- for (pic, title) in zip(0..<images.count, categories) {
- let imageView = UIImageView()
- imageView.image = images[pic]
- imageView.contentMode = .scaleAspectFill
- let xPosition = 110 * CGFloat(pic)
- imageView.layer.cornerRadius = 10
- imageView.layer.masksToBounds = true
- imageView.frame = CGRect(x: xPosition, y: CGFloat(0), width: 100, height: headerView.scrollView.frame.size.height)
- //Code zu Erstellung der Maske
- let questionLabel = UILabel(frame: CGRect(x: 0, y: 25, width: 100 , height: headerView.scrollView.frame.size.height/2))
- questionLabel.text = title
- questionLabel.textAlignment = .center
- questionLabel.textColor = .white
- questionLabel.font = UIFont.boldSystemFont(ofSize: 15.0)
- questionLabel.layer.shadowColor = UIColor.black.cgColor
- questionLabel.layer.shadowRadius = 3.0
- questionLabel.layer.shadowOpacity = 1.0
- questionLabel.layer.shadowOffset = CGSize(width: 4, height: 4)
- questionLabel.layer.masksToBounds = false
- imageView.addSubview(questionLabel)
- headerView.scrollView.contentSize.width = 127 * CGFloat(pic)
- headerView.scrollView.addSubview(imageView)
- }
- return headerView
- }
- @objc func scrollViewTapped(recognizer: UITapGestureRecognizer) {
- print("läuft")
- }
Der Code zur func scrollViewTapped sah vorher wie folgt aus, jedoch hatte ich damit wenig Erfolg da immer die Meldung kam "found nil while unwrapping an optional value":