我正在开发一个非常小的iOS编辑器。它只有一个视图,一个按钮和一个textView。按下按钮时,会弹出一个自定义UIMenuController,其中包含3个选项:切换粗体,切换斜体和切换草书。
这非常有效,但是,如果我在UITextView是第一个响应者时按下按钮,它还会显示两个默认菜单项,名为“select”和“select all”。
我想摆脱他们,但我不知道该怎么做。这是按下按钮时调用的代码:
- (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];
}
有谁能解释我怎么做?
谢谢!
答案 0 :(得分:3)
创建UITextView
的子类。在您的子类中,如果操作为canPerformAction:withSender:
或NO
,则覆盖@selector(select:)
以返回@selector(selectAll:)
。有关更多信息: