iOS UIMenuController 的使用及不显示的解决办法

 

// 按钮点击事件 

- (void)testMenuClicke:(UIButton *)btn{undefined

     UIMenuController *menu = [UIMenuController sharedMenuController];

    [menu setTargetRect:btn.frame inView:btn.superview];

    //        [UIMenuController sharedMenuController].arrowDirection = UIMenuControllerArrowRight;

    UIMenuItem * item = [[UIMenuItem alloc] initWithTitle:@"复制" action:@selector(copys:)];

    UIMenuItem * item1 = [[UIMenuItem alloc] initWithTitle:@"粘贴" action:@selector(pastes:)];

    UIMenuItem * item2 = [[UIMenuItem alloc] initWithTitle:@"删除" action:@selector(deletes:)];

    [menu setMenuItems:@[item, item1,item2]];

    [menu setMenuVisible:YES animated:YES];

    //[[UIMenuController sharedMenuController] update];

    //menu.arrowDirection = UIMenuControllerArrowLeft;

   }

//  需要设置以下两个方法 

//  不设置这个方法,会导致无法调出menu菜单

- (BOOL)canBecomeFirstResponder {undefined

    return true;

}

// 再此方法中判断允许的方法,否则菜单项不弹出

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

    //    UIResponder

    if(action == @selector(copys:)      ||

       action == @selector(pastes:)      ||

       action == @selector(deletes:)) {undefined

        return YES;

    }

    return NO;

}

// 实现方法,完成功能

- (void)copys:(id)sender {undefined

//    UIPasteboard * paste = [UIPasteboard generalPasteboard];

//    paste.string = self.text;

    

     NSLog(@"copy");

}

- (void)pastes:(id)sender {undefined

//    UIPasteboard * paste = [UIPasteboard generalPasteboard];

//    self.text = paste.string;

      NSLog(@"paste");

}

- (void)deletes:(id)sender {undefined

   // self.text = @"";

    NSLog(@"delete");

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章