为特定的 UITextView 添加 UIMenuItem?

Posted

技术标签:

【中文标题】为特定的 UITextView 添加 UIMenuItem?【英文标题】:Add a UIMenuItem for a specific UITextView? 【发布时间】:2016-01-27 09:00:01 【问题描述】:

我的屏幕上有很多UITextViews,我想为其中一个添加一个新的自定义UIMenuItem

是否可以仅为特定的UITextView 添加自定义UIMenuItem

我使用下面的代码,但我对所有 UITextViews 都有我的自定义按钮

UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Read" action:@selector(readButtonAction)];
[[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];

谢谢

【问题讨论】:

【参考方案1】:

如果您希望为特定的UITextView 显示UIMenuItem,您只需在textFieldDidBeginEditing 方法中添加menuItem 并将特定标签添加到UITextView,以便仅显示自定义菜单项:-

-(void)textViewDidBeginEditing:(UITextView *)textView


  if(textview.tag==999)  //specify for which textveiw you want custom menu 
   
  [[NSOperationQueue mainQueue] addOperationWithBlock:^
   UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Read" action:@selector(readButtonAction)];
    [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObject:menuItem]];
       ];
     
 

【讨论】:

是的,但@Charles Thierry 是对的。每次不是我特定的 UITextView 时,您都需要重置。只需在此处添加一个 else 并使用空数组 setMenuIetems 即可。谢谢你的回答 是的,我认为其他部分将由您处理;)【参考方案2】:

我没有测试它,但是当UITextView 之一成为第一响应者时,您可以重置menuItems。我会通过继承UITextView 并实现becomeFirstResponder 来做到这一点。

【讨论】:

以上是关于为特定的 UITextView 添加 UIMenuItem?的主要内容,如果未能解决你的问题,请参考以下文章

快速更改 UImenu 的位置

在 MATLAB UIMenu 中使用 Enter 作为加速器

使用带有 UITextView 的特定键盘的错误

UIMenu 不弹出

如何修改 UIBarButtonItem 和 UIButton 的 UIMenu

iOS 14 从 UIView 呈现 UIMenu