2012-11-04 139 views
1

我正在研究iOS中的一個非常小的編輯器。它只有一個視圖,一個按鈕和一個textView。當按鈕被按下時,自定義的UIMenuController彈出3個選項:切換粗體,切換斜體和切換草書。但是,如果在UITextView是第一響應者時按下按鈕,它也會顯示兩個默認菜單項,分別命名爲'select'和'select all'。擺脫UIMenuController中的標準項目

我想擺脫他們,但我不知道如何做到這一點。這是按鈕被按下時被調用的代碼:

- (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]; 
} 

任何人都可以解釋我該怎麼做?

謝謝!

回答

3

創建UITextView的子類。在您的子類中,如果動作爲@selector(select:)@selector(selectAll:),則覆蓋canPerformAction:withSender:以返回NO。欲瞭解更多信息:

+0

太好了!感謝您的答案,我會盡力實現:) – Devos50

+0

這可能沒有子類化?我面臨與UIWebView這個問題,但有覆蓋由fmk使用的實施有限的選擇... – Moonwalker