1

我正在尝试在工具栏按钮中显示 UIMenuController。我有下面的代码,但我不确定“SetTargetRect”方法中应该包含什么。

我应该在 SetTargetRect 方法中添加什么来显示菜单?

这段代码还缺少什么吗?

ToolbarItems = new UIBarButtonItem[] { 
new UIBarButtonItem ("Sort", UIBarButtonItemStyle.Bordered, (sender, e) => {
    var menu = UIMenuController.SharedMenuController;
    menu.MenuItems = new UIMenuItem[] {
        new UIMenuItem ("Current", new Selector ("SortRaceEntrants")),
        new UIMenuItem ("Movers", new Selector ("SortRaceEntrants")),
        new UIMenuItem ("Opening", new Selector ("SortRaceEntrants")),
        new UIMenuItem ("Number", new Selector ("SortRaceEntrants"))
    };
    //menu.SetTargetRect ();
    menu.SetMenuVisible (true, true);
}),
};
4

2 回答 2

1

UIBarButtonItem 继承自 UIBarItem 和 NSObject,因此为它们找到一个框架即使不是不可能也不容易。UINavigationBar 从 UIView 继承,因此是一个视图(去图)并有一个框架等。

我所做的是指向 UIBarButtonItem 应该在该视图内的一个矩形。

例如:

[myMenu setTargetRect:CGRectMake(10, 10, 20, 25) 
               inView:self.navigationController.navigationBar];

这将使 UIMenuController '指向'leftBarButtonItem。相同的技术可用于工具栏。

在您的情况下,例如:

[menu setTargetRect:CGRectMake(0,0,40,40)
             inView:self.navigationController.toolBar];

将指向工具栏的中心,因此指向工具栏中的中心按钮

于 2013-05-30T18:22:43.787 回答
0

根据API 文档,目标 rect 定义了您想要显示菜单的区域 - iOS 将在 TargetRect 定义的区域上方或下方显示菜单。

当你使这个菜单可见时, UIMenuController 将它相对于屏幕上的目标矩形定位;这个矩形通常定义一个选择。菜单显示在目标矩形上方,如果没有足够的空间,则显示在其下方。菜单指针放置在目标矩形顶部或底部的中心,视情况而定。确保在使菜单可见之前设置跟踪矩形。您还负责检测、跟踪和显示选择。

此目标矩形 (targetRect) 通常是选择的边界矩形。UIMenuController 将编辑菜单定位在该矩形上方;如果那里没有足够的菜单空间,它将把它放在矩形下方。菜单的指针适当地放置在目标矩形的顶部或底部的中心。请注意,如果您将目标矩形的宽度或高度设为零,UIMenuController 会将目标区域视为用于定位的线或点(例如,插入插入符号或单个点)。

一旦设置,目标矩形就不会跟踪视图;如果视图移动(例如在滚动视图中发生),您必须相应地更新目标矩形。

于 2012-07-06T01:43:11.473 回答