Удалить копию и определить из UIMenuController
У меня есть UIWebView для отображения некоторых статей. Мне нужно выбрать текст из UIWebView и использовать закладку. Так что я использую selection = [wbCont stringByEvaluatingJavaScriptFromString:@"window.getSelection().toString()"];
Но когда я продолжаю нажимать UIMenuItem отображается с копией, определить. Я прочитал некоторые документы и использовал canPerformAction:
копия № Но все же это отображение.
- (void)viewDidLoad
{
[wbCont loadHTMLString:webString baseURL:nil];
[self.view addSubview:wbCont];
NSMutableArray *items = [[[UIMenuController sharedMenuController] menuItems] mutableCopy];
if (!items) items = [[NSMutableArray alloc] init];
UIMenuItem *menuItem;
menuItem = [[UIMenuItem alloc] initWithTitle:@"BookMark" action:@selector(book:)];
[items addObject:menuItem];
[menuItem release];
menuItem = [[UIMenuItem alloc] initWithTitle:@"Note" action:@selector(note:)];
[items addObject:menuItem];
[menuItem release];
[[UIMenuController sharedMenuController] setMenuItems:items];
[items release];
}
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender
{
if (action == @selector(copy:))
{
return NO;
}
if (action == @selector(book:))
{
return YES;
}
else if (action == @selector(note:))
{
return YES;
}
return [super canPerformAction:action withSender:sender];
}
1 ответ
Вы должны создать подкласс UIWebView. (Создайте новый класс Objective C и выберите подкласс UIWebView).
Внутри вашего подкласса напишите метод:
- (BOOL) canPerformAction:(SEL)action withSender:(id)sender{ if (action == @selector(copy:)) { return NO; } return [super canPerformAction:action withSender:sender]; }
Вам не нужно устанавливать там свои собственные селекторы, если вы добавляете их в свой контроллер (так как я думаю, это то, что вы делаете).
Более подробную информацию можно найти здесь: Как вы действительно удаляете Copy из UIMenuController