• 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 }
  • 相关阅读:
    Elasticsearch学习,请先看这一篇!
    加解密/数字签名/证书 原理
    C# 给对象赋null值会释放内存吗?
    打包常见问题
    友盟推送
    谈一谈可能用到数据持久化的地方
    浅谈设置字体大小
    AFN和SDWebImage请求网络图片的一点问题
    linux学习(1)——这是一个新的开始,加油吧少年
    C指针——简单总结
  • 原文地址:https://www.cnblogs.com/hissia/p/5720252.html
Copyright © 2020-2023  润新知