以下是一个完整的评论工作示例...
查看子类的头文件
#import <Foundation/Foundation.h>
@interface MenuControllerSupportingView : UIView
{
}
@end
查看子类的源文件
#import "MenuControllerSupportingView.h"
@implementation MenuControllerSupportingView
//It's mandatory and it has to return YES then only u can show menu items..
-(BOOL)canBecomeFirstResponder
{
return YES;
}
-(void)MenuItemAClicked
{
NSLog(@"Menu item A clicked");
}
-(void)MenuItemBClicked
{
NSLog(@"Menu item B clicked");
}
-(void)MenuItemCClicked
{
NSLog(@"Menu item C clicked");
}
//It's not mandatory for custom menu items
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if(action == @selector(MenuItemAClicked))
return YES;
else if(action == @selector(MenuItemBClicked))
return YES;
else if(action == @selector(MenuItemCClicked))
return YES;
else
return NO;
}
视图控制器头文件
#import <UIKit/UIKit.h>
@interface ViewController1 : UIViewController
@end
视图控制器源码文件
#import "ViewController1.h"
#import "MenuControllerSupportingView.h"
@interface ViewController1()
{
MenuControllerSupportingView *vu;
}
@end
@implementation ViewController1
- (void)viewDidLoad
{
[super viewDidLoad];
vu=[[SGGI_MenuControllerSupportingView alloc]initWithFrame:CGRectMake(0,0,768,1024)];
[self.view addSubview:vu];
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(200,200,200,30)];
[btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[btn setTitle:@"Show" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(SHowMenu) forControlEvents:UIControlEventTouchUpInside];
[vu addSubview:btn];
}
-(void)SHowMenu
{
UIMenuController *menucontroller=[UIMenuController sharedMenuController];
UIMenuItem *MenuitemA=[[UIMenuItem alloc] initWithTitle:@"A" action:@selector(MenuItemAClicked)];
UIMenuItem *MenuitemB=[[UIMenuItem alloc] initWithTitle:@"B" action:@selector(MenuItemBClicked)];
UIMenuItem *MenuitemC=[[UIMenuItem alloc] initWithTitle:@"C" action:@selector(MenuItemCClicked)];
[menucontroller setMenuItems:[NSArray arrayWithObjects:MenuitemA,MenuitemB,MenuitemC,nil]];
//It's mandatory
[vu becomeFirstResponder];
//It's also mandatory ...remeber we've added a mehod on view class
if([vu canBecomeFirstResponder])
{
[menucontroller setTargetRect:CGRectMake(10,10, 0, 200) inView:vu];
[menucontroller setMenuVisible:YES animated:YES];
}
}
-(void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
@end
在View类如果u写canPerformAction是独自返回你会看到所有默认的菜单项类似相机的象征,剪切,复制等。
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return YES;
}
如果u想独自显示类似相机然后
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if([email protected](_insertImage:))
return YES;
else
return NO;
}
如果u想知道,那么所有的行动
参观link
乐于助人,非常有帮助。 – Jake 2011-09-06 15:03:06
这在MonoTouch中的效果非常好 - 只有要注意的事情是'CanBecomeFirstResponder'是一个属性重写,并且您必须为'UIMenuController.MenuItems'属性指定一个'UIMenuItem []'数组。 – PaulJ 2012-05-10 08:45:58
当我在视图*上调用'becomeFirstResponder' *时没有工作。在控制器上调用它工作得很好。 – 2013-04-15 17:02:26