2016-06-11 5 views
0

Kann mir jemand helfen, ich habe ein Problem mit UIMenucontroller.In hier muss ich zwei Menücontroller in Single Viewcontroller verwenden. Nur für das erste Menü "einfügen", für andere Menü "kopieren", "auswählen", "alle auswählen" Wenn ich den freigegebenen Menücontroller verwende, wirkt sich dies auf das andere Menü aus.So verwenden Sie Weitere Menücontroller im View-Controller

Mein Code für erstes Menü ist wie folgt:

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) 

und meine zweites Menü ist:

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) 

Fehler: Hier drin im zweiten Menü enthalten unerwünschte Dinge wie [Select, SelectAll, Copy] mit [Paste].

Wie ich dieses Problem lösen kann, Dank im Voraus

Antwort

0

Hallo Danke für deine Antwort deaktiviert werden, aber Ich fand die Lösung wie folgt:

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

In dieser Weise funktioniert gut.

:) :) :)

0

Sie canPerformAction in einer UITextField Unterklasse außer Kraft setzen sollte das Element zu deaktivieren, die Sie nicht wollen, dann weisen Sie jeder UITextField Sie auf die Unterklasse erstellt.

Zum Beispiel deaktivieren Paste Menüpunkt in uimenucontroller:

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

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

Verbrauch:

let message_Textfield = CustomTextField() 

Jetzt paste Menüpunkt wird für message_Textfield

Verwandte Themen