问题
This is how i set up the popovers
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Delete Patient"
action:@selector(customAction:)];
[[UIMenuController sharedMenuController] setMenuItems:@[menuItem]];
and then add the require methods
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
NSLog(@"canPerformAction");
// The selector(s) should match your UIMenuItem selector
if (action == @selector(customAction:)) {
return YES;
}
return NO;
}
- (void) customAction:(id) sender
{
for (Treatment *t in self.ptToDelete.patientRx) {
[self.managedObjectContext deleteObject:t];
}
[self.managedObjectContext deleteObject:self.ptToDelete];
NSError *error = nil;
if (![self.managedObjectContext save:&error]) {
NSLog(@"Error! %@", error);
}
}
This works for iOS6, but now it is not. The following method is not getting called, it should be called when I tap and hold
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
回答1:
I found that I needed to have the following in my CollectionViewCell class. This was not required in ios6 however. Hope this saves someone a few hrs.
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// The selector/s should match your UIMenuItem selector
if (action == @selector(customAction:)) {
return YES;
}
return NO;
}
- (void) customAction:(id)sender
{
// do stuff
}
来源:https://stackoverflow.com/questions/18774265/uimenu-popovers-in-collectionview