如何删除复制,全选,从UIMenuController中定义menuItem
正如我的这个问题显示我想显示popup时,用户select文本。 并popup有关该单词的详细信息将被显示。
但我没有得到任何满意的答案,所以我改变了我的逻辑。
现在,我想在我的UIMenuController中显示一个项目,如Pop-Up
菜单,当用户单击该选项而不是显示popup窗口时。
我用这个代码实现了这个,
UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Pop-Up" action:@selector(displayPopUp:)]; [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
所以我的select显示,当我点击该选项比popup式显示。但其他一些选项也显示,我不想这样,这样
我GOOGLE了它,并得到这个代码
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { [UIMenuController sharedMenuController].menuVisible = NO; //do not display the menu if (action == @selector(copy:)) { return NO; } else if (action == @selector(selectAll:)) { return NO; } [self resignFirstResponder]; //do not allow the user to selected anything return NO; return [super canPerformAction:action withSender:sender]; }
但是它并没有删除UIMenuController中的这个额外的项目。
canPerformAction方法发送给响应者链中的每个人。 所以,如果你上面提到的代码是在ViewController中,但是UITextView是第一个响应者,它将不起作用。 我发现最简单的事情是子类UITextView,并把canPerformAction代码放在那里。 我禁用所有的默认菜单项,并创build我自己的菜单。
class rtfView: UITextView { override func canPerformAction(_ action: Selector, withSender sender: Any!) -> Bool { if (action == #selector(textItem(_:))) || (action == #selector(h1Item(_:))) || (action == #selector(h2Item(_:))) || (action == #selector(h3Item(_:))) { return true } else { return false } }
}
- 如何改变UISegmentedControl的圆angular半径?
- 使用自动布局将特定边框添加到UIView
- NSUserDefaults的registerDefaults是如何工作的?
- CAShapeLayer填充另一个CAShapeLayer作为掩码
- UITableViewCell initWithStyle:UITableViewCellStyleSubtitle不起作用
- 操作无法完成。 (com.facebook.sdk错误2.)ios6
- Swift数组设置索引值不起作用
- 有没有任何技术/概念的原因,为什么iOS不支持cocoa绑定?
- 为什么我不能使用“description”作为Core Data实体的属性名称?