加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:50:35 所属栏目:百科 来源:网络整理
导读:每当用户选择任何文本时,我都要求在uiwebview上显示菜单项. 我试过了 let highlightMenuItem = UIMenuItem(title: "Highlight",action: #selector(ViewController.hightlight))UIMenuController.sharedMenuController().menuItems = [highlightMenuItem] 但
每当用户选择任何文本时,我都要求在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
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读