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 }

 

posted @ 2016-07-30 09:27  hissia  阅读(700)  评论(0编辑  收藏  举报