Jos*_*hua 14 iphone cocoa-touch objective-c uitextview uimenucontroller
我创建了一个UIMenuController并设置了一个自定义菜单项,如下所示:
UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"Do This" action:@selector(item1)];
[menuController setMenuItems:[NSArray arrayWithObject:item1]];
Run Code Online (Sandbox Code Playgroud)
但我希望该对象是唯一出现的对象,所以我添加了这段代码:
- (BOOL)canPerformAction: (SEL)action withSender: (id)sender {
BOOL answer = NO;
if (action == @selector(item1))
answer = YES;
return answer;
}
Run Code Online (Sandbox Code Playgroud)
问题是它仍然显示其他##标题##项目,例如"选择","全选"和"粘贴".这可能与在...中显示的内容有关UITextView.但是,如果显示所有其他项目,我该如何停止?
Ste*_*ntz 16
我认为这是你想要子类的少数情况之一UITextView.我只是用以下代码尝试了这个,并且显示的唯一菜单项是我的Do Something项.
从我的 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
Run Code Online (Sandbox Code Playgroud)
我的代码MyTextView.h:
// MyTextView.h
#import <UIKit/UIKit.h>
@interface MyTextView :UITextView {
}
@end
Run Code Online (Sandbox Code Playgroud)
代码MyTextView.m:
// MyTextView.m
#import "MyTextView.h"
@implementation MyTextView
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
return NO;
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11517 次 |
| 最近记录: |