IOS开发 Tableview长按弹出菜单,类似android的popwindow

来源:互联网 发布:音量增大软件 中文版 编辑:程序博客网 时间:2024/05/16 04:20

viewDidLoad方法中添加如下代码:

//给列表添加长按手势

    UILongPressGestureRecognizer *lpress = [[UILongPressGestureRecognizer allocinitWithTarget:self action:@selector(longPress:)];

    lpress.minimumPressDuration = 1;

    lpress.delegate = self;

    [self.tableViews addGestureRecognizer:lpress];//tableViews是uitableview的变量

    [lpress release];

要实现@selector(longPress:)中的longPress方法当然方法名自定义即可

//长按列表项弹出菜单

- (void)longPress:(UILongPressGestureRecognizer *) gestureRecognizer {

    

    CGPoint location = [gestureRecognizer locationInView:tableViews];//用来确定长按列表项时鼠标的位置

    if (gestureRecognizer.state == UIGestureRecognizerStateBegan){

        UIMenuController *menuController = [UIMenuController sharedMenuController];

        //menu1、menu2、menu3、menu4必须要实现,否则也会出现无法显示对应的item的情况

        UIMenuItem *menuItem1 = [[UIMenuItem allocinitWithTitle:@"菜单1" action:@selector(menu1)];

        UIMenuItem *menuItem2 = [[UIMenuItem allocinitWithTitle:@"菜单2" action:@selector(menu2)];

        UIMenuItem *menuItem3 = [[UIMenuItem allocinitWithTitle:@"菜单3" action:@selector(menu3)];

        UIMenuItem *menuItem4 = [[UIMenuItem allocinitWithTitle:@"菜单4" action:@selector(menu4)];

        ListCell *cell = (ListCell *)gestureRecognizer.view;//你tableview的cell

        

        [cell becomeFirstResponder];

        [menuController setMenuItems:[NSArray arrayWithObjects:menuItem1,menuItem2,menuItem3,menuItem4,nil]];

         [menuController setTargetRect:CGRectMake(location.xlocation.y,  5050inView:tableViews];//location.x, location.y分别为长按那点的xy坐标    tableViews为将要展示弹出框的视图

        [menuController setMenuVisible:YES animated:YES];

        [menuItem1 release];

        [menuItem2 release];

        [menuItem3 release];

        [menuItem4 release];

        

    }


}

实现了这些代码,菜单还不会弹出,这个纠结了我好长时间。。

//确保UIMenuItem可以弹出,必须重写该方法,返回yes,否则菜单不显示

-(BOOL) canBecomeFirstResponder{

    return YES;

}



原创粉丝点击