我正在尝试在工具栏按钮中显示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);
}),
};
答案 0 :(得分: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];
将指向toolBar的中心,因此指向toolBar中的中心按钮
答案 1 :(得分:0)
根据API docs,目标矩形定义了您想要显示相对于菜单的区域 - iOS将显示TargetRect定义的区域上方或下方的菜单。
当您显示此菜单时,UIMenuController会对其进行定位 相对于屏幕上的目标矩形;这个矩形通常 定义一个选择。菜单显示在目标矩形上方或, 如果没有足够的空间,在它下面。菜单的指针是 放置在目标矩形的顶部或底部的中心,如 适当。在制作之前一定要设置跟踪矩形 菜单可见。您还负责检测,跟踪和 显示选择。
和
此目标矩形(targetRect)通常是边界矩形 一个选择。 UIMenuController将编辑菜单定位在此上方 长方形;如果那里的菜单没有足够的空间,那就是 将它放在矩形下方。菜单的指针放在 适当时,目标矩形的顶部或底部的中心。 请注意,如果您创建目标矩形的宽度或高度 零,UIMenuController将目标区域视为一条线或点 定位(例如,插入符号或单点)。
设置后,目标矩形不会跟踪视图;如果 视图移动(例如在滚动视图中会发生),您必须更新 相应的目标矩形。