2016-06-11 11 views
0

誰でも助けてもらえますか?私はUIMenucontrollerに問題があります。ここでは、1つのviewcontrollerで2つのmenucontrollerを使う必要があります。 最初のメニューでは、 "コピー"、 "選択"、 "すべて選択"の他のメニューの "貼り付け"のみ私は共有メニューコントローラを使用しているときに他のメニューに影響します。View Controllerでもっとmenucontrollerを使う方法

override func canBecomeFirstResponder() -> Bool 
{ 
    return true 
} 

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

    //actions 

} 

UIMenuController.sharedMenuController().menuItems = nil 

    let Select: UIMenuItem = UIMenuItem(title: "Select", action: Selector("Select")) 
    let SelectAll: UIMenuItem = UIMenuItem(title: "SelectAll", action: Selector("SelectAll")) 
    let Copy: UIMenuItem = UIMenuItem(title: "Copy", action: Selector("Copy")) 


    let menu: UIMenuController = UIMenuController.sharedMenuController() 
    menu.menuItems = [Select,SelectAll,Copy] 
    menu.setTargetRect(cell.frame, inView: cell.superview!) 
    menu.setMenuVisible(true, animated: true) 

と私の2番目のメニューは次のとおりです:次のように

最初のメニューのための私のコードがある

UIMenuController.sharedMenuController().menuVisible = false 
let paste: UIMenuItem = UIMenuItem(title: "Paste", action: Selector("paste")) 

let menu: UIMenuController = UIMenuController.sharedMenuController() 
menu.menuItems = [paste] 
menu.setTargetRect(message_Textfield.frame, inView: message_Textfield.superview!) 
menu.setMenuVisible(true, animated: true) 

エラー:ここで 、2番目のメニューで、不要な含まれてい[Select]、[Select All]、[Copy]を[Paste]としてください。

どのように私はこれを解決することができ、事前

答えて

0

こんにちは感謝のために無効になりますが、しかし、私は次のような解決策を見つけた:

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

     if(MenuBool == true){ 
      if action == Selector("Copy") || action == Selector("star") || action == Selector("info") || action == Selector("forward") || action == Selector("Delete") 
      { 
       print("UIMenuController====>CellMenu") 
       UIMenuController.sharedMenuController().menuVisible = false 
       return true 
      } 
      print("UIMenuController====>Defaultmenu1") 
      return false 

     }else if MenuBool == false 
     { 
      print("UIMenuController====>Defaultmenu2") 
      return false 

     }else{ 
      print("UIMenuController====>DefaultmenuElse") 

      return false 
     } 
    } 

では、このように動作します。

:) :)

0

にあなたはそれぞれがあなたがサブクラスに作成UITextFieldの割り当て、その後、あなたはしたくない項目を無効にするために、UITextFieldのサブクラスでcanPerformActionをオーバーライドする必要があります感謝。例えば

、uimenucontrollerにペースト]メニュー項目を無効にします。

class CustomTextField: UITextField { 
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool { 
     if action == "paste:" { 
      return false 
     } 

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

使用法:

let message_Textfield = CustomTextField() 

pasteメニュー項目は、あなたの答えのためにmessage_Textfield

関連する問題