我正在使用iOS中的一个很小的编辑器。它只有一个视图,一个按钮和一个textView。按下按钮后,会弹出一个自定义UIMenuController,其中包含3个选项:切换粗体,斜体和草书。

但是,如果我在UITextView是第一响应者时按下按钮,它会很好地工作,它还会显示两个默认菜单项,分别为“选择”和“全选”。

我想摆脱它们,但是我不确定该怎么做。这是按下按钮时调用的代码:

- (IBAction)settingsPressed:(id)sender
{
    UIMenuController *sharedController = [UIMenuController sharedMenuController];

    UIMenuItem *menuItem1 = [[UIMenuItem alloc] initWithTitle:bold ? @"Bold off" : @"Bold on" action:@selector(toggleBold:)];
    UIMenuItem *menuItem2 = [[UIMenuItem alloc] initWithTitle:italics ? @"Italics off" : @"Italics on" action:@selector(toggleCursive:)];
    UIMenuItem *menuItem3 = [[UIMenuItem alloc] initWithTitle:underline ? @"Underline off" : @"Underline on" action:@selector(toggleUnderline:)];

    NSArray *menuItems = @[menuItem1, menuItem2, menuItem3];

    CGRect drawRect = [sender convertRect:[sender bounds] toView:self.view];
    [sharedController setTargetRect:drawRect inView:self.view];

    [sharedController setMenuItems:menuItems];
    [sharedController setMenuVisible:YES animated:YES];

    [sharedController setMenuItems:nil];
}

谁能解释我该怎么做?

谢谢!

最佳答案

创建UITextView的子类。在子类中,如果操作是canPerformAction:withSender:NO,则覆盖@selector(select:)以返回@selector(selectAll:)。了解更多信息:

  • Managing the Selection and Edit Menu
  • UIMenuController Class Reference
  • -[UIResponder canPerformAction:withSender:]
  • UIResponderStandardEditActions Protocol Reference
  • 关于objective-c - 摆脱UIMenuController中的标准项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13222042/

    10-10 20:54