无法在 iOS8 中显示 UICollectionView 菜单

Posted

技术标签:

【中文标题】无法在 iOS8 中显示 UICollectionView 菜单【英文标题】:Unable to show UICollectionView menu in iOS8 【发布时间】:2014-09-08 18:58:31 【问题描述】:

我正在尝试让 UIMenu 出现在集合视图中。

我已经设置了我的菜单

UIMenuItem* deleteItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"DELETE", @"Supprimer") action:@selector(deleteShow:)];
UIMenuItem* archiveItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"ARCHIVE", @"Archiver") action:@selector(archiveShow:)];
UIMenuItem* unarchiveItem = [[UIMenuItem alloc] initWithTitle:NSLocalizedString(@"UNARCHIVE", @"Restaurer") action:@selector(unArchiveShow:)];

[[UIMenuController sharedMenuController] setMenuItems:@[deleteItem,archiveItem,unarchiveItem]];

我已经在我的 Collection View Delegate 中实现了以下方法:

- (BOOL)collectionView:(UICollectionView *)collectionView shouldShowMenuForItemAtIndexPath:(NSIndexPath *)indexPath
- (BOOL)collectionView:(UICollectionView *)collectionView canPerformAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender
- (void)collectionView:(UICollectionView *)collectionView performAction:(SEL)action forItemAtIndexPath:(NSIndexPath *)indexPath withSender:(id)sender

前两个总是返回 YES。 但是长按没有菜单显示。甚至没有标准的剪切/复制/粘贴菜单。 有没有人经历过这样的事情?

提前致谢

【问题讨论】:

【参考方案1】:

花了一些时间解决这个问题。发现如果在UICollectionViewCell的子类中不实现“deleteShow:”等方法,菜单项就不会显示出来。

【讨论】:

以上是关于无法在 iOS8 中显示 UICollectionView 菜单的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS swift 中的 ARSCNView 中显示 uicollection 视图

UICollection 在使用 Swift 3 显示图像时非常慢

Table Cell 中的 UICollection 视图在 Swift 3 中不显示图像

无法在 iOS8 自定义键盘中获得约束

AVPlayer 无法在 iOS8 上播放 NSDocuments 目录中的视频

无法使用社交框架在 iOS8 中设置联系人图像