CollectionView 中的 UIMenu 弹出框

Posted

技术标签:

【中文标题】CollectionView 中的 UIMenu 弹出框【英文标题】:UIMenu popovers in CollectionView 【发布时间】:2013-09-12 21:01:45 【问题描述】:

这就是我设置弹出框的方式

UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Delete Patient"

                                                  action:@selector(customAction:)];



[[UIMenuController sharedMenuController] setMenuItems:@[menuItem]];

然后添加require方法

- (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);




这适用于 ios6,但现在不是。以下方法没有被调用,当我点击并按住时应该调用它

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender

【问题讨论】:

【参考方案1】:

我发现我的 CollectionViewCell 类中需要包含以下内容。然而,这在 ios6 中不是必需的。希望这可以为某人节省几个小时。

- (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

【讨论】:

我发现了同样的事情。同样的问题:***.com/questions/18906991/… 对我来说,它确实像我在这篇文章中写的答案一样工作:***.com/a/18725322/1944351 当您完全按照我的回答时,无需添加上述方法。注意:我也没有添加 canBecomeFirstResponder(不需要) 对我来说这是 iOS7 下 UISearchBar 的问题。见***.com/a/19183509/388412

以上是关于CollectionView 中的 UIMenu 弹出框的主要内容,如果未能解决你的问题,请参考以下文章

快速更改 UImenu 的位置

UIMenu 不弹出

单击 UIBarButtonItem 时显示 UIMenu

iOS开发之UIMenu

iOS 14 从 UIView 呈现 UIMenu

UIMenu 按钮使用后消失