Vielleicht ein bisschen spät, aber ich fand vielleicht eine bessere Lösung für diejenigen, die für diese nach wie vor suchen sind:
In viewDidLoad Ihrer UICollectionViewController Ihr Element hinzufügen:
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Title" action:@selector(action:)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
Fügen Sie die folgenden Delegatmethoden hinzu:
//This method is called instead of canPerformAction for each action (copy, cut and paste too)
- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
if (action == @selector(action:)) {
return YES;
}
return NO;
}
//Yes for showing menu in general
- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
Unterklasse UICollectionViewCell, wenn Sie nicht bereits. Fügen Sie die Methode, die Sie für Ihre Artikel angegeben:
- (void)action:(UIMenuController*)menuController {
}
Auf diese Weise können keine becomeFirstResponder oder andere Methoden benötigen. Sie haben alle Aktionen an einem Ort und Sie können leicht verschiedene Zellen behandeln, wenn Sie eine allgemeine Methode mit der Zelle selbst als Parameter aufrufen.
Edit: Irgendwie ist der uicollectionview die Existenz dieser Methode muss (diese Methode nicht für die benutzerdefinierte Aktion aufgerufen wird, denke ich, die uicollectionview nur für existance prüft)
- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender {
}
Ja, du diese drei Methoden nur brauchen. Alles andere ist unnötig. –
Danke, ich habe versucht, Lösung, während Sie UIMenuItem schreiben * menuItem = [[UIMenuItem alloc] initWithTitle: @ "Bearbeiten" Aktion: @selector (editPlate :)]; Allerdings muss ich eine Methode editPlate haben, aber ich möchte performAction verwenden, damit ich die Zellen-ID kennen kann. Wie finden Sie den Menüpunkt? – Dejell