Swift-设置可见菜单控制器

时间:2014-10-09 07:35:46

标签: xcode swift

我试图显示UimenuController但我无法查看它。我怎么办?

let MenuController: UIMenuController = UIMenuController.sharedMenuController()
 MenuController.menuVisible = true
 MenuController.arrowDirection = UIMenuControllerArrowDirection.Down
 MenuController.setTargetRect(CGRectMake(100, 80, 50, 50), inView: self.view)
 let MenuItem_1: UIMenuItem = UIMenuItem(title: "Menu", action: "delete:")
 let MenuItems: NSArray = [delete]
 MenuController.menuItems = MenuItems

3 个答案:

答案 0 :(得分:15)

为了实际显示菜单,您需要执行以下操作:

  1. 在获取sharedMenuController
  2. 之前调用becomeFirstResponder()
  3. 最后调用menu.setMenuVisible(true,animated:true)
  4. 覆盖canBecomeFirstResponder功能
  5. 覆盖canPerformAction函数
  6. 编写选择器的功能
  7. 这是一个例子

    func someFunc() {
        becomeFirstResponder()
        var menu = UIMenuController.sharedMenuController()
        var deleteItem = UIMenuItem(title: "Delete me", action: Selector("deleteLine"))
        menu.menuItems = [deleteItem]
        menu.setTargetRect(CGRectMake(100, 80, 50, 50), inView: self)
        menu.setMenuVisible(true, animated: true)
    }
    
    func deleteLine() {
        //Do something here
    }
    
    override func canBecomeFirstResponder() -> Bool {
        return true
    }
    
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
        // You need to only return true for the actions you want, otherwise you get the whole range of
        //  iOS actions. You can see this by just removing the if statement here.
        if action == Selector("deleteLine") {
            return true
        }
        return false
    }
    

答案 1 :(得分:4)

Swift 3版本代码:

make_my_foo_object

答案 2 :(得分:0)

另一重要的事情是应该执行UIMenuItem的操作。