In meiner tvOS App habe ich eine Sammlungsansicht mit Zellen, die Filme darstellen.UIGestureRecognizer funktioniert nach der ersten Verwendung nicht mehr
I 2 angebracht Geste Erkenner zu der Ansicht:
- Zum Film Details zur Auswahl tippen
- Film abspielen direkt (mit einem Apple TV Remote gewidmet Play-Taste)
let posterTap = UITapGestureRecognizer(target: self, action: #selector(ListViewController.movieSelect(_:)))
posterTap.allowedPressTypes = [NSNumber(integer: UIPressType.Select.rawValue)]
self.view.addGestureRecognizer(posterTap)
let posterPlay = UITapGestureRecognizer(target: self, action: #selector(ListViewController.moviePlay(_:)))
posterPlay.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]
self.view.addGestureRecognizer(posterPlay)
Und die respektierten Methoden
func movieSelect(gesture: UITapGestureRecognizer) {
if let cell = UIScreen.mainScreen().focusedView as? ItemCollectionViewCell {
let item = ItemViewController(nibName: "ItemViewController", bundle: nil)
item.item = cell.data
self.presentViewController(item, animated: true, completion: nil)
}
}
func moviePlay(gesture: UITapGestureRecognizer) {
if let cell = UIScreen.mainScreen().focusedView as? ItemCollectionViewCell {
let data = cell.data
// TLDR;
// Passing data to AVPlayerViewController and presenting it + start playing the movie.
}
}
Alles scheint zu funktionieren, abgesehen davon, dass, wenn ich aufhöre den Film zu spielen und zurück zur Liste komme (durch Schließen der AVPlayerViewController
), meine zweite Gestenerkennung (Play-Taste) nicht mehr funktioniert. Es ist immer noch da wenn ich mit print(self.view.gestureRecognizers)
überprüfe aber moviePlay()
nie wieder angerufen wird egal was kommt.
Gibt es eine Möglichkeit, dies zu debuggen? Was könnte dieses Problem verursachen? Ich denke, dies wird verursacht durch UIGestureRecognizerState
wird immer noch in "use"? Oder vielleicht so etwas. An diesem Punkt habe ich keine Ahnung.
Ich verwende keine Einschränkungen in diesem bestimmten ViewController überhaupt. In vielen Fällen ist es nicht einmal erforderlich, da auf TVOS Sie einmal Bildschirmgröße haben, was Sie sehen, ist, was Sie bekommen :) – kernelpanic
Im nicht zu verstehen, haben Sie keine Einschränkungen in ItemViewController Xib für Ihre Objekte? –