【问题标题】:Show menu controller on top of cell in iOS collection view在 iOS 集合视图中的单元格顶部显示菜单控制器
【发布时间】:2014-07-19 20:39:35
【问题描述】:

当用户长按嵌入在容器视图中的集合视图中的单元格时,我想显示一个带有自定义操作的 UIMenuController。

我已经实现了这个堆栈溢出解决方案中提到的工作正常。 Copy Callout in UICollectionView

我现在遇到的问题是菜单项出现在单元格下方,即使我将箭头方向保持在 UIMenuControllerArrowDown。

我的集合视图是视图控制器内的容器视图的一部分。当我在集合视图中按下图像时,它会在单元格底部显示菜单项。我怎样才能在顶部显示它?

我试图在下面的特定视图中显示它,但我的努力没有用。

[menu setTargetRect:cell.bounds inView:parentControllerView];

有人可以建议我如何解决这个问题吗?如果我的问题不清楚或需要更多详细信息,请告诉我。

【问题讨论】:

    标签: ios objective-c ios7 uicollectionview


    【解决方案1】:

    当您将单元格的父视图设置为显示菜单时,您的菜单显示在单元格的底部,父视图的高度无法在您的单元格下方显示您的菜单,因此它显示与您的单元格重叠。 所以如果你想在你的单元格下面显示你的菜单而不是你必须改变菜单显示的视图..set

    [menu setTargetRect:cell.bounds inView:[UIApplication sharedApplication] window];
    

    这将在应用程序的主窗口中显示您的菜单。

    【讨论】:

      【解决方案2】:

      当您尝试在视图上方显示菜单时会出现问题,这会导致菜单出现在导航栏上方。 iOS 不想将其显示在导航栏上方,而是将其向下推。如果您的项目在屏幕上较低,它将正确显示在视图上方并按预期指向它。可能值得在 bugreport.apple.com 提交错误报告以请求菜单显示在导航栏上方。

      此外,最好将单元格的边界用作目标矩形,并将单元格用于视图而不是父控制器的视图,如下所示:

      [menu setTargetRect:cell.bounds inView:cell];

      现在,我找到了一种解决方法,可以强制菜单显示在导航栏上。不要将单元格的边界提供为目标矩形,而是自己将其向下推一点。出于某种原因,这样做会阻止 iOS 在它出现在导航栏上时将其按下。

      [menu setTargetRect:CGRectMake(0, 10, cell.bounds.width, cell.bounds.height - 10) inView:cell];

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多