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 = true 10 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() -> Bool 44 { 45 return true 46 } 47 48 //MARK: 返回悬浮菜单中可以显示的选项 49 override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool 50 { 51 // 判断 action 中包含的各个事件的方法名称, 对比上了才能显示 52 if (action == #selector(NSObject.copy(_:)) || action == #selector(ZWLabel.test(_:))) 53 { 54 return true 55 } 56 return false 57 } 58 59 override func copy(sender: AnyObject?) { 60 print("试试复制") 61 } 62 63 }