2016-06-11 1 views
0

Может ли кто-нибудь помочь мне, у меня проблема с UIMenucontroller. Здесь мне нужно использовать два диспетчера меню в одном диспетчере просмотра. Для первого меню только «вставить», для другого меню «копировать», «выбрать», «выбрать все». Когда я использую общий диспетчер меню, он влияет на другое меню.Как использовать More menucontroller в контроллере View

Мой код первого меню выглядит следующим образом:

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) 

и моего второго меню является:

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) 

Ошибка: Здесь, во втором меню содержит нежелательную как [Select, SelectAll, 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 
     } 
    } 

In, этот способ работающий хорошо.

:) :) :)

0

Вы должны переопределить canPerformAction в подклассе UITextField, чтобы отключить элемент, который вы не хотите, а затем присвоить каждое UITextField созданных для подкласса.

Например, отключить пункт меню пасты в 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

Смежные вопросы