【问题标题】:how to remove "define" menu when text is highlighted in UIWebView如何在 UIWebView 中突出显示文本时删除“定义”菜单
【发布时间】:2012-01-11 19:54:20
【问题描述】:

我试过这样做:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{
   return NO;
}

但是还是弹出菜单,我也想保留副本,我只想去掉“define”,可以吗?为了澄清我不想删除文本选择的能力,我只是想删除 UIMenuController 中的“定义”选项

【问题讨论】:

  • 为什么要屏蔽用户定义词的能力?

标签: iphone objective-c ios ipad uiwebview


【解决方案1】:

你是否在 canPerformAction:withSender 中返回YES?

请注意,如果您的类对命令返回 NO,则响应者链上的另一个响应者可能仍会返回 YES,从而启用该命令。

【讨论】:

  • 这是一个类似 java 的 Final 关键字在 Objective-C 中派上用场的地方
  • 错了。响应者链跨不同的类(UIView->UIViewController->UIWindow->UIApplication)工作。 “final”关键字对这里没有任何帮助。
【解决方案2】:

你需要继承UIWebView,然后

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{
//    XLOG(@"perform action %@ with sender %@.", NSStringFromSelector(action), sender);
    if ((action == @selector(cut:)) || (action == @selector(copy:)) || (action == @selector(select:)) ||
        (action == @selector(selectAll:)) || (action == @selector(paste:)) || (action == @selector(delete:)))
        return [super canPerformAction:action withSender:sender];

    return NO;
}

【讨论】:

  • 来自 Apple 的文档:UIWebView 类不应被子类化。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 2013-10-25
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 2020-11-12
相关资源
最近更新 更多