2017-08-12 51 views
0

我試圖刪除的項目查找 & 分享......從UIMenuController。我將如何具體刪除這兩個並保留我的自定義之一。這裏是我到目前爲止已經取得的成就:如何刪除UIMenuController默認項在斯威夫特

override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 

     // add two custom menu items to the context menu of UIWebView (assuming in contenteditable mode) 


     let menuItem1 = UIMenuItem(title: "My Button", action: #selector(myButtonSel)) 
     UIMenuController.shared.menuItems = [menuItem1] 

    } 

這裏是canPerformAction我:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 

     //let shareSelector: Selector = NSSelectorFromString("_share:") 

     if webView?.superview != nil { 
      if action == #selector(myButtonSel){ 
       return true 
      } 
     } 

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

也爲一些奇怪的原因,當我嘗試刪除所有默認項,只保留我的自定義,它不起作用。下面是我嘗試了,代碼:

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 

    //let shareSelector: Selector = NSSelectorFromString("_share:") 

    if webView?.superview != nil { 
     if action == #selector(myButtonSel){ 
      return true 
     } 
     else { 

      return false 
     } 
    } 

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

即使當我嘗試刪除所有其他項目的,並保持我的習慣,我不能這樣做。我所能做的就是添加我的自定義項目。

+0

您是否收到SIGBART錯誤?在這種情況下,請檢查右側菜單中的「Connections Inspector」選項卡?如果您看到一些從故事板或代碼中刪除的名稱,但它們仍然存在 - 則應從Connections Inspector中刪除主題。 – KuboAndTwoStrings

+0

@KuboAndTwoStrings不,我沒有得到任何錯誤,我的自定義菜單的作品,但我似乎無法刪除UIMenuController項目。只要我嘗試刪除它們,代碼就會被忽略。 – MGames

回答

1

我試過這個,但它對我的工作,通過繼承WebView和重寫canPerformAction方法,其中我手動刪除默認選項。

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) 
    } 

我提到this答案由Ike10,它已經爲我工作。試一試。

+0

還有沒有被拒絕的其他方式,因爲文檔:https://developer.apple.com/documentation/uikit/uiwebview在底部,它說UIWebView不應該被分類。 – MGames

+0

另外,如何檢查選定的文本。這是行不通的:webViewHere.stringByEvaluatingJavaScript(from:「window.getSelection()。toString();」 – MGames

+1

好吧,所以經過一些研究後,我發現它不違背UIWebView子類的策略。使用NSNotification從ViewController調用函數。 – MGames