微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 如何使用默认以外的自定义项创建自定义UIMenuController?

每当用户选择任何文本时,我都要求在uiwebview上显示菜单项.

enter image description here

我试过了

let highlightMenuItem = UIMenuItem(title: "Highlight",action: #selector(ViewController.hightlight))

UIMenuController.sharedMenuController().menuItems = [highlightMenuItem]

但这只会添加更多菜单项和认现有菜单项.就这样

enter image description here


enter image description here

有没有办法实现这一目标只有菜单项复制,突出显示和注意?

解决方法

您可以通过继承UIWebView并重写canPerformAction(Swift 3)来实现此目的.然后,您需要做的就是为要禁用的任何操作返回false.

例:

class EditedUIMenuWebView: UIWebView {

  override func canPerformAction(_ action: Selector,withSender sender: AnyObject?) -> Bool {
    if action == #selector(cut(_:)) {
      return false
    }
    if action == #selector(paste(_:)) {
      return false
    }
    if action == #selector(select(_:)) {
      return false
    }
    if action == #selector(selectAll(_:)) {
      return false
    }
    ...

    return super.canPerformAction(action,withSender: sender)
  }

}

如果您有任何问题,请询问!

编辑如果要禁用所有操作,但在canPerformAction中返回false可能更容易,并为您想要的那些返回true:

override func canPerformAction(_ action: Selector,withSender sender: AnyObject?) -> Bool {
   if action == #selector(copy(_:)) || action == #selector(customMethod(_:)) {
     return true
   }
   ...
   return false
 }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐