代码之家  ›  专栏  ›  技术社区  ›  Joshua

UIMenuController自定义项

  •  14
  • Joshua  · 技术社区  · 15 年前

    我创建了UIMenuController,并将其设置为自定义菜单项,如下所示:

    UIMenuController *menuController = [UIMenuController sharedMenuController];
    UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"Do This" action:@selector(item1)];
    [menuController setMenuItems:[NSArray arrayWithObject:item1]];
    

    但我希望该对象是唯一出现的对象,因此我添加了以下代码:

    - (BOOL)canPerformAction: (SEL)action withSender: (id)sender {
        BOOL answer = NO;
    
        if (action == @selector(item1))
            answer = YES;
    
        return answer;
    }
    

    问题是它仍然显示其他###标题###项,如“选择”、“全选”和“粘贴”。 这可能与显示在 UITextView

    1 回复  |  直到 15 年前
        1
  •  16
  •   titaniumdecoy Mr. T    14 年前

    我认为这是少数几个你想子类化的例子之一 UITextView 做点什么 项目。

    从我的 TestViewController.m

    @implementation TestViewController
    
    - (void) doSomething: (id) sender
    {
        NSLog(@"Doing something");
    }
    
    - (void) viewDidLoad
    {
        UIMenuController *menuController = [UIMenuController sharedMenuController];
        UIMenuItem *item = [[[UIMenuItem alloc] initWithTitle: @"Do Something"
            action: @selector(doSomething:)] autorelease];
        [menuController setMenuItems: [NSArray arrayWithObject: item]];
    }
    
    @end
    

    MyTextView.h :

    //  MyTextView.h
    
    #import <UIKit/UIKit.h>
    
    @interface MyTextView :UITextView {
    
    }
    
    @end
    

    代码 MyTextView.m

    //  MyTextView.m
    
    #import "MyTextView.h"
    
    @implementation MyTextView
    
    - (BOOL) canPerformAction:(SEL)action withSender:(id)sender
    {
        return NO;
    }
    
    @end