Kopieren Legende in UICollectionView
Ich habe eine UICollectionView mit UIImageView in jeder Zelle, nun möchte ich hinzufügen, Kopieren Legende, wie auf den Fotos.app:
Sah ich diese Methode in der UICollectionViewDelegate:
- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
Nach einigen weiteren Minuten der Forschung, die ich gefunden UIMenuController Klasse, wie ich verstanden habe, muss ich mit ihm arbeiten um das Menü zu bekommen, aber trotzdem, ich denke, dass es zu mehr einfach Weg, dann erstellen UIGestureRecognizer und die Erstellung, Positionierung etc. meine UIMenu.
Bin ich auf dem richtigen Weg? Wie könnte man diese Funktion implementiert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, du bist auf dem richtigen Weg. Sie können auch implementieren benutzerdefinierte Aktionen über Ausschneiden, kopieren, einfügen mit dieser Technik.
Benutzerdefinierte Aktionen für die UICollectionView
Hinweis: iOS 7.0 Ändert sich das Verhalten
In Ihrem UICollectionViewCell Unterklasse, müssen Sie die benutzerdefinierte Aktion-Methoden oder-nichts erscheint.
Benötigen Sie ein delegate-Protokoll, und legen Sie es auf jeder Zelle zu nennen, zurück zu den UIController, die behauptet, Ihre UICollectionView. Dies ist, weil die Zelle sollte nicht nichts über dein Modell, da Sie nur beteiligt ist bei der Anzeige von Inhalten.
In Ihren ViewController oder Unterklasse von UICollectionViewController müssen Sie entsprechen, um das Protokoll und Umsetzung der neuen Methode.
Optional: In Ihrem UIView-Unterklasse, Sie können den Standardwert überschreiben, Ausschneiden, Kopieren, Einfügen wenn Sie bei der Implementierung der Methode canPerformAction hier, anstatt in der UIViewController. Ansonsten wird das Verhalten zeigen die Standard-Methoden auf, bevor Sie Ihre benutzerdefinierten Methoden.
Dies ist die vollständige Lösung:
In meinem Fall, ich bin da nur Copy-Funktion in meinem CollectionView, und wenn die Kopie ist gedrückt, ich bin kopieren Sie das Bild, das im inneren der Zelle in die Zwischenablage.
Vielleicht ein bisschen spät, aber ich vielleicht eine bessere Lösung gefunden für diejenigen, die noch auf der Suche nach diesem:
In viewDidLoad Ihrer UICollectionViewController hinzufügen Ihre Position:
Fügen Sie die folgende delegate-Methoden:
Unterklasse UICollectionViewCell, wenn Sie nicht bereits. Fügen Sie die Methode, die Sie angegeben, für Ihre Position:
Diese Weise brauchen Sie nicht alle becomeFirstResponder oder andere Methoden. Sie haben alle Aktionen an einem Ort und Sie kann problemlos mit anderen Zellen, wenn Sie rufen eine Allgemeine Methode, mit der die Zelle selbst als parameter.
Edit: Irgendwie ist das uicollectionview muss die Existenz dieser Methode (diese Methode ist nicht genannt, für die benutzerdefinierte Aktion, ich denke, die uicollectionview prüft nur für die Existenz)