你的位置:首页 > 操作系统

[操作系统]UIMenuController 简单示例 (Swift)


刚开始接触Swift,感觉是简单一些,但是有一些不习惯,没看基础知识,直接看demo!

可以和http://www.cnblogs.com/hissia/p/5668513.html里面的进行对比,挺容易掌握

直接上代码:

 1 import UIKit 2  3 class ZWLabel: UILabel { 4    5   //MARK: 在storyboard中直接拖一个UILabel,然后设置类为ZWLabel 6   override func awakeFromNib() 7   { 8     // 用户交互 9     self.userInteractionEnabled = true10     11     // 绑定手势12     self.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(ZWLabel.labelClick)))13   }14   func labelClick()15   {16     // lable成为第一响应者17     self.becomeFirstResponder()18     19     // 获取菜单20     let menu = UIMenuController.sharedMenuController()21     22     if menu.menuVisible {23       menu.setMenuVisible(false, animated: true)24     } else {25       // 设置自定义菜单26       menu.menuItems = [ UIMenuItem.init(title: "复制", action: #selector(ZWLabel.test(_:))) ]27       28       // 菜单显示位置29       menu.setTargetRect(self.bounds, inView: self)30       31       // 显示菜单32       menu.setMenuVisible(true, animated: true)33     }34   }35   36   //MARK: 试试37   func test(menu :UIMenuController )38   {39     print("试试")40   }41   42   //MARK: 让Lable具备成为第一响应者的资格43   override func canBecomeFirstResponder() -> Bool44   {45     return true46   }47   48   //MARK: 返回悬浮菜单中可以显示的选项49   override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool50   {51     // 判断 action 中包含的各个事件的方法名称, 对比上了才能显示52     if (action == #selector(NSObject.copy(_:)) || action == #selector(ZWLabel.test(_:)))53     {54       return true55     }56     return false57   }58   59   override func copy(sender: AnyObject?) {60     print("试试复制")61   }62   63 }