UIMenucontroller的使用

来源:互联网 发布:淘宝一件代发货源网免费加盟代理 编辑:程序博客网 时间:2024/05/16 23:51
1. Menu所处的View必须实现 – (BOOL)canBecomeFirstResponder, 且返回YES
2. Menu所处的View必须实现 – (BOOL)canPerformAction:withSender,并根据需求返回YES或NO
3. 使Menu所处的View成为First Responder (becomeFirstResponder)
4. 定位Menu (- setTargetRect:inView:)
5. 展示Menu (- setMenuVisible:animated:)


UIMenuController*popMenu = [UIMenuControllersharedMenuController];

  

UIMenuItem *item1 = [[UIMenuItemalloc] initWithTitle:@”1″action:@selector(menuItem1Pressed:)];

UIMenuItem *item2 = [[UIMenuItemalloc] initWithTitle:@”2″action:@selector(menuItem2Pressed:)];

UIMenuItem *item3 = [[UIMenuItemalloc] initWithTitle:@”3″action:@selector(menuItem3Pressed:)];

UIMenuItem *item4 = [[UIMenuItemalloc] initWithTitle:@”4″action:@selector(menuItem4Pressed:)];

NSArray *menuItems = [NSArrayarrayWithObjects:item1,item2,item3,item4,nil];

[popMenu setMenuItems:menuItems];

[popMenu setArrowDirection:UIMenuControllerArrowDown];

  

[item4 release];

[item3 release];

[item2 release];

[item1 release];

[popMenu setTargetRect:CGRectMake(162,195,0,0)inView:self.dialView];

[popMenu setMenuVisible:YESanimated:YES];



  1. becomFirstResponder方法,使view或者viewController的self成为第一响应者,可以在相应文件的任意地方调用实现该方法,不过建议与UIMenuController放在一起。

    [selfbecomeFirstResponder];

  2. 设置-(BOOL) canBecomeFirstResponder的返回值为YES,原因不言而喻。

    -(BOOL) canBecomeFirstResponder{

    returnYES;

    }

  3. 重载函数-(BOOL) canPerfomAction:(SEL)actionwithSender:(id)sender,设置要显示的菜单项,返回值为YES。若不进行任何限制,则将显示系统自带的所有菜单项(很多的,自己可以试一下),在此,只显示自定义的4项,即:

    -(BOOL) canPerformAction:(SEL)action withSender:(id)sender{

    if (action == @selector(menuItem1Pressed:) || action ==@selector(menuItem2Pressed:)||

    action == @selector(menuItem3Pressed:) || action ==@selector(menuItem4Pressed:)){

    return YES;

    }

    returnNO;//隐藏系统默认的菜单项

    }