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 }

 

转载于:https://www.cnblogs.com/hissia/p/5720252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值